エラー発生後のスクリプトの実行

エラー発生後のスクリプトの実行

特定のステップでエラーが発生した後もシェルスクリプトを実行し続けたいが、エラーの後に終了します。

if [ condition ];then
     cmd
else 
     cmd1
     return 4
fi

cmd2

上記の手順が実行されていませんでしたが、コード4を返し、cmd2を実行したかったのですが、それは起こりませんでした。コード全体が関数内にあります。

ベストアンサー1

関数を返す指定した次の番号(または実行された前のコマンドの戻りコード)を使用して関数を終了するので、次のコマンド(cmd2)を実行せずに終了するのは通常の動作です。 cmd2コマンドを実行したいが関数の最後に4を返したい場合(cmdではなくcmd1を使用するため)、次のフラグを使用します。

flag=0
if [ condition ];then
     cmd
else 
     cmd1
     flag=1
fi
cmd2
if [[ $flag -eq 1 ]]; then
     return 4
fi
return 0

しかし、これは少しトリッキーに見えるので、他の方法を考慮する必要があります(2つの異なる機能?)。

おすすめ記事