特定のステップでエラーが発生した後もシェルスクリプトを実行し続けたいが、エラーの後に終了します。
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つの異なる機能?)。