我是bash脚本编程新手,我一直在学习,因为我正在做一个小型项目。但是,我遇到了一个我似乎无法逾越的问题。Bash命令替换变量
我有一个变量,我需要包含在一个命令中。当直接在shell中运行(手动键入变量)时,该命令返回预期结果。但是,使用变量时我无法使其工作。
因此,如果我手动运行此,它正确返回0或1,具体取决于它是否正在运行。
ps -ef | grep -v grep | grep -c ProcessName
然而,当我尝试嵌入到这此条款时,它总是计算为0,因为它不是寻找正确的文本。
while [ `ps -ef | grep -v grep | grep -c {$1}` -ne 0 ]
do
sleep 5
done
有没有办法可以做到这一点?我已经尝试了无数不同的东西无济于事。我也尝试使用$()语法进行命令替换,但我没有这方面的运气。
谢谢!
为什么你在while循环的测试中有大括号,但在你的例子中没有? $ 1是否有正确的值? – Cascabel 2011-02-08 16:53:10
我把大括号放在while循环中,因为我认为我需要它们来表示变量。这可能不正确,但删除它们并不能解决我的问题。是的,$ 1有正确的价值。我在while语句之前添加了`echo $ 1`,它是正确的。 – grt3kl 2011-02-08 17:08:45