
私は、終了コードを使用しない、変更できないスクリプトを使用しています。(すべての終了は単に「exit」です)
スクリプトを変更せずに (またはスクリプトを書いたバカに怒鳴らずに)、スクリプトが前の時点で終了するのではなく、「最後まで到達した」かどうかを確認する方法はありますか?
私が考えられる唯一のことは、何らかの方法でアクティブなプロセスを追跡して終了することですが、エラーが原因で終了すると終了することもあります。
答え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