检查中的Bash/Linux的

问题描述:

我有这个条件了一个问题:检查中的Bash/Linux的

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 ]] 

试试这个:

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

无需引用的整数。

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

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

if pgrep "${0##*/}"; then