[解決済み】プロセス終了コードに基づくシェルスクリプトの終了 [重複]。
2022-03-24 11:26:53
質問
いくつかのコマンドを実行するシェルスクリプトを持っています。いずれかのコマンドが0以外の終了コードで終了した場合、シェルスクリプトを終了させるにはどうすればよいですか?
解決方法を教えてください。
各コマンドの後、終了コードは
$?
変数があるので、次のようなものになります。
ls -al file.ext
rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi
のため、パイプコマンドに注意する必要があります。
$?
は、パイプの最後の要素のリターンコードを与えるだけなので、コードで。
ls -al file.ext | sed 's/^/xx: /"
は、ファイルが存在しなくてもエラーコードを返しません (
sed
の部分は実際に動作し、0を返します)。
は、その
bash
シェルは実際にそのような場合に役立つ配列を提供しています。
PIPESTATUS
. この配列はパイプラインのコンポーネントごとに1つの要素を持っており、次のように個別にアクセスすることができます。
${PIPESTATUS[0]}
:
pax> false | true ; echo ${PIPESTATUS[0]}
1
の結果を得ていることに注意してください。
false
コマンドを使用します。パイプライン全体ではありません。また、適当に処理するために、リスト全体を取得することもできます。
pax> false | true | false; echo ${PIPESTATUS[*]}
1 0 1
パイプラインから最大のエラーコードを取得したい場合、次のような使い方ができます。
true | true | false | true | false
rcs=${PIPESTATUS[*]}; rc=0; for i in ${rcs}; do rc=$(($i > $rc ? $i : $rc)); done
echo $rc
これは、それぞれの
PIPESTATUS
要素に順番に格納し、それを
rc
よりも大きい場合は、前の
rc
の値を指定します。
関連
-
[解決済み] Docker ubuntu イメージ - bash: man: コマンドが見つかりません。
-
[解決済み] bashの文字列の等値性テストで、予期しない演算子エラーが発生するのはなぜですか?重複
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MacOSのbashターミナルでexport PS1="\u[\033[m]@[\033[32m]\h:\[\033[33;1m]\w[\033[m]\$" は何を意味していますか?
-
[解決済み] ファイルに書き込むが、ファイルが存在する場合は上書きする
-
[解決済み] Homebrewは最新ですが、`could not link` + `delete path` のエラーは気にしなくていいのでしょうか?
-
[解決済み] bash スクリプトの "${BASH_SOURCE[0]}" と $( cd $( dirname "xxx" && pwd )) の意味について
-
[解決済み] ssh / リモートbashコマンドでシングルクォート文字をエスケープするにはどうすればよいですか?
-
[解決済み] bashでjsonファイルを解析するためにjqの出力からダブルクオートを削除する方法は?
-
[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].
-
[解決済み] bashでのDiffコマンド
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?
-
[解決済み] いずれかのコマンドが0以外の値を返した場合、シェルスクリプトを中断する