我对这种情况有疑问:
echo ${0##*/} # result: bady
my if: if [[ "$(pgrep -c "${0##*/}")" -eq 1 ]]... check OK!
edit if: if [[ "$(pgrep -c "bady")" -eq 1 ]]... check problem!
为什么?
我对这种情况有疑问:
echo ${0##*/} # result: bady
my if: if [[ "$(pgrep -c "${0##*/}")" -eq 1 ]]... check OK!
edit if: if [[ "$(pgrep -c "bady")" -eq 1 ]]... check problem!
为什么?
你有双引号,改为:
if [[ "$(pgrep -c bady)" -eq 1 ]]
您真的关心计数是否为 1,还是只需要区分“匹配”和“不匹配”,而计数恰好为 1?您可以只检查退出状态pgrep
以查看是否发生匹配:
if pgrep "${0##*/}"; then
尝试这个 :
if (( $(pgrep -c bady) == 1 ))
无需引用整数。
注意:((...))
是一个算术命令,如果表达式非零,则返回退出状态 0,如果表达式为零,则返回 1。如果需要副作用(分配),也用作“让”的同义词。见http://mywiki.wooledge.org/ArithmeticExpression