解説
終了コード0は何を意味する?コマンドの表示と成功・失敗を分けて読もう
コマンドを実行して文字が出なかった。成功したのかな、それとも動いていないのかな。画面の表示だけでなく、終了コードという数値も確認してみよう。

コマンドを実行して文字が出なかった。成功したのかな、それとも動いていないのかな。画面の表示だけでなく、終了コードという数値も確認してみよう。
この記事はBashの基本的な終了状態を扱う。シェルはコマンドを受け付けて実行するプログラムだよ。既存のファイルを変更せず、trueとfalseという練習用のコマンドで確かめる。
0と0以外
Bashでは通常、終了コード0は成功を示し、0以外は失敗などの状態を示す。具体的な番号の意味はコマンドごとの仕様によって違うよ。
文字が表示されたかは別の話。成功して何も表示しないコマンドもあれば、エラーの説明を表示して失敗するコマンドもある。0以外の番号を全部同じ原因とみなさないようにしよう。
直後の状態を読む
true
printf '%s\n' "$?"
false
printf '%s\n' "$?"
trueは0、falseは1を返す。$?は直前のコマンドの終了状態を表すので、この練習の表示は0、次に1になる。間へ別のコマンドを入れると、その別のコマンドの状態に変わるよ。
| コマンド | 画面への表示 | 終了コード |
|---|---|---|
| true | 通常なし | 0 |
| false | 通常なし | 1 |
同じ「何も出ない」でも、状態が違う例なんだ。
成功したときだけ次へ進む
Bashの && は、左のコマンドが成功した場合に右を実行する。次は安全な表示だけを使った練習だよ。
true && printf 'next\n'
false && printf 'next\n'
最初だけnextが表示される。実際のデプロイで使うなら、左のコマンドが何を成功と定義するかも確認する。番号だけ見て、すべての内容が正しいと保証されるわけではない。
パイプでつなぐ場合は別途確認
複数のコマンドを「|」でつなぐと、Bashは通常、最後のコマンドの終了状態をパイプラインの状態に使う。途中の失敗まで同じように検出できるとは限らない。pipefailなどの設定も関係するので、一つのコマンドの練習と分けて読むことが大切だよ。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。