シェルスクリプトがありますが、変数の値に応じて終了したいと思います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
成功した実行以外に報告するものが実際にないため、最後の項目があるべきかどうかは議論の余地があります。