【发布时间】:2011-02-01 13:46:29
【问题描述】:
现在这很尴尬。我正在编写快速脚本,但我无法弄清楚为什么这个语句不起作用。
if [ $(pidof -x test.sh | wc -w) -eq 1 ]; then echo Passed; fi
我也尝试使用反引号代替 $(),但它仍然不起作用。
你能看出它有什么问题吗? pidof -x test.sh | wc -w 如果我在脚本中运行它会返回 1,所以我看不出有任何理由说明 if [ 1 -eq 1 ] 基本上不会通过。
非常感谢!
【问题讨论】:
-
最好总是在测试中引用表达式,以防它们变成空字符串。不过,在这种情况下,我很确定
wc -w肯定会打印一些东西?安全总比后悔好。 -
你能在 if 之外回显它以检查它打印的内容吗?看看它不工作是因为它是零,还是因为它是两个?
-
@pajton:我认为这有点像产生同名子进程的愚蠢行为——这是在我们可以看到的代码之外完成的。
-
@Jefromi:我没有比我在问题中写的更多的代码。
标签: bash if-statement