シェル $? 関数の戻り値、または直前のコマンドの終了ステータスを取得する
2022-02-12 18:20:48
は、最後のコマンドの終了状態、または最後の関数の戻り値を取得する特殊な変数です。
終了ステータスは、直前のコマンド実行の結果です。終了ステータスは数値で、一般にほとんどのコマンドは、C言語のmain()関数と同様に、成功すれば0を、失敗すれば1を返します。
しかし、別の値を返すコマンドもあり、これはエラーの種類を表しています。
1) $? 直前のコマンドの終了ステータスを取得する
以下のコードを書き、test.shという名前で保存してください。
#! /bin/bash
if [ "$1" == 100 ]
then
exit 0 #Correct parameter, exit status is 0
else
exit 1 #Error argument, exit status 1
fi
exitは現在のシェルプロセスを終了することを意味し、新しいプロセスでtest.shを実行する必要があります。そうしないと、現在のシェルセッション(ターミナルウィンドウ)が閉じられ、その終了状態を取得することができなくなるからです。
例えば、引数100を渡してtest.shを実行する場合。
[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ bash . /test.sh 100 # Run as a new process
[mozhiyan@localhost demo]$ echo $?
0
ここでも、test.shの実行時にパラメータ89を渡します。
[mozhiyan@localhost demo]$ bash . /test.sh 89 # Run as a new process
[mozhiyan@localhost demo]$ echo $?
1
2) $? 関数の戻り値を取得する
以下のコードを書き、test.shという名前で保存してください。
#! /bin/bash
#Get the sum of two numbers
function add(){
return `expr $1 + $2`
}
add 23 50 # Call the function
echo $? #Get the return value of the function
ランニングの結果
73
C++、C#、Javaなどでプログラミング経験のある読者は、厳密に言えば、シェル関数のreturnキーワードは関数の戻り値ではなく、関数の終了状態を示すために使われることに注意してください。他のプログラミング言語と異なり、シェルには戻り値を特に扱うキーワードはありません。
以上でシェル$の記事は終わりです。関数の戻り値や直前のコマンドの終了ステータスを取得する方法についての説明は以上となります。Scripting Houseの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。
関連
最新
-
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 実装 サイバーパンク風ボタン