1. ホーム
  2. linux

[解決済み] いずれかのコマンドが0以外の値を返した場合、シェルスクリプトを中断する

2022-03-18 16:55:08

質問

私は、いくつかのコマンドを呼び出すBashシェルスクリプトを持っています。

いずれかのコマンドが0以外の値を返した場合、シェルスクリプトが自動的に戻り値1で終了するようにしたいのですが。

各コマンドの結果を明示的に確認しなくても可能でしょうか?

例えば

dosomething1
if [[ $? -ne 0 ]]; then
    exit 1
fi

dosomething2
if [[ $? -ne 0 ]]; then
    exit 1
fi

解決方法は?

スクリプトの先頭に追加してください。

set -e

これは、単純なコマンドがゼロ以外の終了値で終了した場合、シェルを即座に終了させるものです。 単純なコマンドとは、if、while、until テストの一部でも、&& または || リストの一部でもないコマンドを指します。

を参照してください。 bash(1) のマニュアルページ の内部コマンドを使用すると、より詳細な情報を得ることができます。

私は個人的に、ほとんどすべてのシェルスクリプトを "set -e" で開始します。 途中で何か失敗してスクリプトの残りの部分の前提が崩れたときに、頑なにスクリプトを継続させるのは本当に迷惑なことです。