我是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