現在我正在用bash腳本(Cygwin)運行一些程序。如何在bash腳本中執行多個if,else語句?
基本上我在做的是程序啓動後,運行一個循環檢查程序是否仍在運行。
我做:
while true
do
if [ "$(ps -W | grep -w name | gawk '{print $8,$9}' | gawk -F \\ '{print $4}')" == 'program' ];then
sleep 1
else
"start program" (whatever is needed here)
fi
done
但我開始實現具有隻是造成不必要的系統資源使用這樣的腳本多次。
我試着做一個如果然後,ELIF,但它永遠不會超過第一個如果。
我需要它去「好的第一個如果是消極的,嘗試下一個,到最後,重新開始」。
這裏是我的腳本的副本,我忘了說我正在使用Cygwin,但它確實不會改變任何東西,因爲它似乎仍然使用正常的bash腳本,只是可能有不同的路徑來啓動文件。 http://pastebin.com/s8ZdPQMn和是的h。是不是我似乎無法編輯pastebin。
我的總體計劃是檢查第一個SRPro是否在運行,檢查下一個等,只有在檢測到一個沒有運行時觸發。
編輯:我解決了它。不完全確定爲什麼,但是在每個程序的原始單個文件中,最終4美元的gawk打印給了我想要的東西,但由於某種原因,這樣做時,它變成了5美元。因此,將$ 4更改爲$ 5使腳本正常工作。
編輯:一個非常奇怪的問題,雖然是,它將工作分鐘結束,然後突然有時感到困惑,並開始一個程序或其他東西的7個副本。它也可以隨機發生。
你必須在後臺啓動程序,即'name&'?你能不能在前臺運行它,'name',這樣只有在腳本完成後控制才能繼續執行? –
顯示使用你的if-elif-else塊的代碼? –
你可能想澄清你的最終目標是什麼。你已經展示了你嘗試過的一件東西,這很好。但很難從你的問題中知道你想要做什麼。你是否試圖運行多個進程,監視它們,如果它們退出重新啓動它們? –