お兄ちゃん!
たいていのコマンドって実行しても
起こったことを知らせてくれないよね
失敗したらエラーメッセージが
出ることが多いけど
成功したか失敗したかわかりにくいよ
実はコマンドは成功や失敗を
伝えているんだよ
今回は「終了ステータス(exit status)」を学ぼう!
「終了コード(exit code)」や
「返り値(return value, retval)」とも
よばれるよ
えっ?
コマンドは成功か失敗を
教えてくれていたの?
普段は気にならないようになっているので
気が付かないのが普通だから大丈夫だよ
終了ステータスは
「コマンドの成否」を
数字で表したものだよ
実はこの数字を返していたんだ
true
コマンドtrue
は
どんな引数が与えられても
何もせず成功で終了するよ
true [引数]...
引数なしで実行してみよう!
true
…何も起こらずすぐにプロンプトが表示されたね
何も起こっていないように見えるけどシェルはこのコマンドの「成功」という結果を覚えているんだ
どうやって見ればいいのかな?
?
変数を使おう!この変数には直前のコマンドの終了ステータスが入っているんだecho
で ?
変数の値を表示させて確認しようecho $?
どれどれ…
0
0
が表示されたよ!true
が成功して終了するということは0
は成功を意味するんだよね?そのとおり!シェルでは
0
が成功0
以外は失敗を意味するよfalse
コマンドfalse
はどんな引数が与えられても何もせず失敗で終了するよfalse [引数]...
名前がわかりやすいね!
こちらも引数なしで実行してみよう!
false
うん!
これも特に何も起きずすぐプロンプトが返ってきたね
挙動は
true
と同じだけど結果が違うんだ終了ステータスを確認してみようecho $?
これまでの説明からすると
0
以外が入っていそうだね1
今度は 「失敗」を 意味するんだよね!
1
が表示されたよ!0
以外がそうなんだコマンドは終了するときに終了ステータスを返しているよ普段はあまり見ることはなく必要な時に確認するものなんだ
なるほど…コマンドが成功したかどうか
?
変数で確認できるんだね!
コマンドの前に
!
を付けるとそのコマンドの終了ステータスを反転するよ! コマンド
コマンドが「成功( を返せば「失敗( コマンドが「失敗( を返せば「成功( を返すってこと?
0
)」0
以外)」0
以外)」0
)」そういうことだね!
今回は終了ステータスを学んだよ!コマンドは終了ステータスという数字を返していて成功は 失敗は
0
、0
以外なんだ!また成功と失敗は !
で反転できるんだね!でもこれってどういう場面で役に立つのかな?
例えば状況を判断して処理を分ける場合に使われるよ「あるコマンドが成功したら次の処理をする」とか 「失敗したらエラーメッセージを表示する」 といった感じだね具体的な使い方は少し応用的だからもう少し後で学ぶことにしよう