檢查腳本是否完成執行而不是退出

檢查腳本是否完成執行而不是退出

我正在使用一個無法修改的腳本,該腳本不使用退出代碼。 (所有出口都只是「出口」)

在不修改腳本(或對編寫腳本的白痴大喊大叫)的情況下,有沒有辦法檢查腳本是否“到達末尾”而不是在腳本中較早的某個時刻退出?

我唯一能想到的是以某種方式追蹤活動進程直到它結束,但當它因為錯誤而退出時它也會結束。

答案1

我正在使用一個無法修改的腳本,該腳本不使用退出代碼。

如果發生錯誤,該檔案的最後一行應包含“exit”,否則腳本將成功執行。

此代碼將導致命令退出,如果失敗,則傳回代碼 1;如果成功,則傳回代碼 0:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit

tail -n1僅顯示最後一行並grep -vq exit測試該行是否包含單字exit

如何使其顯示有用訊息的範例:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit && echo Success

或者:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit || echo Fail

相關內容