お兄ちゃん!
たいていのコマンドって
実行しても起こったことを
知らせてくれないよね
失敗したらエラーメッセージが
出ることが多いけど
成功や失敗がわかりにくいよ…
実はコマンドは
成功や失敗を
こっそり伝えているんだよ
えっ?
全然そんな感じはしなかったけど…
普段は気にならないようになっているので
気が付かないのが普通だから大丈夫だよ
今回は「終了ステータス(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 以外なんだ!また成功と失敗は ! で反転できるんだね!でもこれってどういう場面で役に立つのかな?
例えば状況を判断して処理を分ける場合に使われるよ「あるコマンドが成功したら次の処理をする」とか 「失敗したらエラーメッセージを表示する」 といった感じだね
具体的な使い方は少し応用的だからもう少し後で学ぶことにしよう