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