检查中的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