C言語の戻り値の0は偽なのに正常終了って逆だと思ってました。
その前提が間違っていました。
関数の戻り値はBooleanとは無関係でただの「整数」
下記のC言語の大原則は揺るぎませんが、戻り値はこれには当てはまりません。
0 | 偽(false) |
0以外 | 真(true) |
0 = 正常終了
非0=それ以外
と定義する。そうするとShell Script側で都合が良い、
という昔の先人たちの解釈だそうな。
これはUNIX系OSで生まれた慣習・文化らしいです。
0 = True = 正常終了
ではなく
0=正常終了を表す終了コード
1=○○のエラーを表す終了コード
2=○○のエラーを表す終了コード
3=○○のエラーを…..
また1970年代のpdp11などでは、正常終了コードは1種類しかなく、
それに反して異常終了はやたらとたくさんあった背景もあるそうです。