if...elseでシェルスクリプトを終了する

if...elseでシェルスクリプトを終了する

シェルスクリプトがありますが、変数の値に応じて終了したいと思いますERROR_COUNT。私は書くことができます

if [ ${ERROR_COUNT} -gt 0 ]
then
    echo "Exiting unsuccessfully";
    exit 1;
fi
echo "Exiting successfully";
exit;

または

if [ ${ERROR_COUNT} -gt 0 ]
then
    echo "Exiting unsuccessfully";
    exit 1;
else
    echo "Exiting successfully";
    exit;
fi

これら2つの方法に問題がありますか?

ベストアンサー1

何が起こるかについては、2つの分岐の作成方法の間に技術的な違いはありません。スタイルと個人的な好みの問題です。

else一部の開発者は、最初のブランチが終了した場合、ifステートメントのブランチで無条件に終了することを好まない。

コードは次のように書くことができます。

if [ "$ERROR_COUNT" -ne 0 ]; then
    echo 'There were errors' >&2
    exit 1
fi
# echo 'No errors' >&2

削除されたセミコロン、引用された変数拡張、および削除された最後の拡張exit(スクリプトの最後に暗黙的)を参照してください。 (少なくとも私にとっては)もっと明確なので、テストを-ne 0次のように変更しました。-gt 0

また、2つの診断メッセージの出力を変更して標準エラーストリームに移動するようにしました(そしてユーザーにとってより便利な方法で改善しました)。echo成功した実行以外に報告するものが実際にないため、最後の項目があるべきかどうかは議論の余地があります。

おすすめ記事