检查是否在Bash/Linux中
我对这种情况有问题:检查是否在Bash/Linux中,bash,Bash,我对这种情况有问题: 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) ==
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”的同义词。参见您真的在乎计数是1,还是只需要区分“匹配”和“不匹配”,而计数恰好是1?您只需检查pgrep
的退出状态,查看是否发生匹配:
if pgrep "${0##*/}"; then