-1

我对这种情况有疑问:

echo ${0##*/} # result: bady

my if: if [[ "$(pgrep -c "${0##*/}")" -eq 1 ]]... check OK!

edit if: if [[ "$(pgrep -c "bady")" -eq 1 ]]... check problem!

为什么?

4

3 回答 3

1

你有双引号,改为:

if [[ "$(pgrep -c bady)" -eq 1 ]]
于 2013-03-12T14:37:43.613 回答
0

您真的关心计数是否为 1,还是只需要区分“匹配”和“不匹配”,而计​​数恰好为 1?您可以只检查退出状态pgrep以查看是否发生匹配:

if pgrep "${0##*/}"; then
于 2013-03-12T15:00:08.160 回答
0

尝试这个 :

if (( $(pgrep -c bady) == 1 ))

无需引用整数。

注意:((...))是一个算术命令,如果表达式非零,则返回退出状态 0,如果表达式为零,则返回 1。如果需要副作用(分配),也用作“让”的同义词。见http://mywiki.wooledge.org/ArithmeticExpression

于 2013-03-12T14:38:35.897 回答