检查是否在Bash / Linux中

时间:2013-03-12 14:35:58

标签: 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!

为什么?

3 个答案:

答案 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