2013-05-20 50 views
0

我有一個bash腳本,它運行命令以獲取其結果並根據結果執行操作。下面是該腳本:如何獲得kill命令導致bash腳本

#!/bin/bash 
commandResult=$(($myCommand) 2>&1) 
if [[ "$commandResult" == *Error* ]]; then 
    x="failed" 
else 
    x="success" 
fi 
echo $x 
exit 0; 

沒有與此腳本沒有問題,問題是,當我試圖殺死$myCommand在通過kill -9 $myCommand在命令行運行腳本的中間,$commandResult將是無效和「成功「將被打印。

我怎麼能把殺死結果放在$commandResult或其他任何方式來找出在這個腳本中死亡的進程?

任何幫助將不勝感激。

回答

1

你應該檢查你的命令的退出碼,而不是輸出到標準錯誤。 myCommand應該在成功時退出0,並在失敗時輸出一些非零代碼。如果通過kill命令殺死它,它的退出代碼將自動爲128 + n,其中n是您用來殺死它的信號。然後你可以測試成功與

if myCommand; then 
    echo success 
    exit 0 
else 
    status=$? 
    echo failure 
    exit $status 
fi 

另外,你可能don't need to use kill -9。從kill開始(發送溫和的TERM信號);如果不起作用,請加入kill -2INT,等同於Ctrl-C)。