シェルスクリプトの戻り値の実装とその利用シーン
アプリケーションシナリオ
Jenkinsなどのアプリケーションでは、シェルスクリプトが埋め込まれており、システムはシェルスクリプトの戻り値で実行結果を判断している場合があります。戻り値が0でない場合は、実行エラーが発生したため、実行を中断する必要がありますが、これは単一のコマンドを使用する場合には問題ではありません。しかし、シェル(A)スクリプトが順番にシェルスクリプトファイル(B )を呼び出す場合、呼び出されたシェルスクリプトB の実行中にエラーが発生しても、システムはB に問題があるとは考えず、そのまま続行する。このため、問題が隠蔽されてしまう。
解決する
呼び出されたシェルスクリプトBでエラーが発生したときに、そのエラーコードをキャッチして返すことで、システムが呼び出されたシェルスクリプトBのエラーコードをキャッチして、時間内に実行を中止できるようにすること。
1. 実装手順です。
(1)実行結果コードを取得する。取得するには、"$?"を使用します。
(2) 実行結果コード検出機能を追加し、結果コードが0以外であることが判明した場合、スクリプトの実行コードを返すようにする。これには "exit [code]" を使用します。
2. 例
シェルA
#do something ...
/home/test/B.sh
#do something ...
シェルB(/home/test/B.sh)です。
check_result()
{
echo input params:$1
if [ $1 ! = 0 ]; then
echo wahaha
exit $1
fi
}
ls /
echo 1.result:$?
check_result $?
cat /xxxyyy
v1=$?
echo 2.result:{v1}
check_result $v1
check_result()は、シェルスクリプトの実行を停止し、コマンドのリターンコードが0以外の場合にそのコードを返す定義済み検出関数です。
v1=$? コマンド実行時のリターンコードを一時変数として保存します。後で使用するために保存しておく必要があります。
付録
1.シェルのリターンコード
フォームD-1. "Reserved"exit code
<テーブル
2. シェルのリターンコードと関数のリターンコード、コマンドのリターンコードの違いについて
- スクリプト全体の実行結果の状態を識別するシェルのリターンコードは、"exit return code"で表されます。
- 関数の結果状態を識別する関数のリターンコードは、"return code"で表わされます。
-
コマンドリターンコード、コマンドの結果の状態を識別するもので、コマンド実行直後に "$?"で取得します。
シェルスクリプトの戻り値とその利用シーンについての説明は以上となります。シェルスクリプトの戻り値についての詳細は、過去の記事を検索していただくか、以下の記事を引き続きご覧ください。
関連
最新
-
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 実装 サイバーパンク風ボタン