[解決済み] エラー時にBashシェルスクリプトを自動終了させる [重複]。
質問
シェルスクリプトを書いているのですが、コマンドのどれかに失敗したときに、そのシェルスクリプトの実行を停止させる機能があると便利なのですが。以下に例を示します。
#!/bin/bash
cd some_dir
./configure --some-flags
make
make install
つまり、この場合、スクリプトが指定されたディレクトリに変更できないのであれば、確かに ./configure の後、失敗した場合。
各コマンドにifチェックを入れることができるのは十分承知していますが(これは絶望的な解決策だと思います)、コマンドの1つが失敗した場合にスクリプトを終了させるグローバル設定はないのでしょうか。
解決方法は?
を使用します。
set -e
ビルトインを使用します。
#!/bin/bash
set -e
# Any subsequent(*) commands which fail will cause the shell script to exit immediately
あるいは
-e
をコマンドラインで実行します。
bash -e my_script.sh
また、以下のことも可能です。
無効化
この動作は
set +e
.
をすべて、または一部採用することもできます。
-e
-u
-x
と
-o pipefail
のようにオプションを指定します。
set -euxo pipefail
-e
はエラー時に終了します。
-u
は未定義の変数でエラーとなり
-o (for option) pipefail
は、コマンドパイプの失敗で終了します。いくつかの不具合や回避策については、次のような文書があります。
ここで
.
(*) 注意
シェルが行う ない は、失敗したコマンドの一部が の直後のコマンドリストです。 一方 または まで キーワードで指定します。 に続くテストの一部です。 もし または エリフ 予約語、一部 の中で実行されるすべてのコマンドの && または || コマンドを除くリスト の後に、最後の && または || を除くパイプラインのコマンドは でコマンドの戻り値が反転している場合,または,最後の !
(以下
man bash
)
関連
-
[解決済み] OS X で 'find' コマンドを使用して 'sed' を使用するとエラーが発生する。"無効なコマンドコードです。"
-
[解決済み] シンプルなAsciiテーブルをCSVに変換する【終了】。
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える
-
[解決済み] いずれかのコマンドが0以外の値を返した場合、シェルスクリプトを中断する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] バッシュ Vim.NET」が表示されたらVimを終了させる Warning: 出力先が端末でない"
-
[解決済み] MacOSのbashターミナルでexport PS1="\u[\033[m]@[\033[32m]\h:\[\033[33;1m]\w[\033[m]\$" は何を意味していますか?
-
[解決済み] Bashで$()と`の違いはあるのでしょうか?重複] [重複
-
[解決済み] cmake execute_process COMMAND [重複]。
-
[解決済み] eval "$(docker-machine env default) "とする。
-
[解決済み] nohupプロセスを終了させる方法を教えてください。
-
[解決済み] いずれかのコマンドが0以外の値を返した場合、シェルスクリプトを中断する
-
[解決済み] 最初のエラーで停止する[重複]。
-
[解決済み] Bashスクリプトでエラーを発生させる