答え1
0 の整数値は次のように評価されます。間違ったほとんどの汎用プログラミング言語でブールコンテキストで使用されている場合。これは、次のCコードに似たコードがある可能性があることを意味します。
c = 100;
while (--c) { /* do something while c is non-zero */ }
シェルでは、終了状態 1 は次のように評価されます。間違った条件付きコンテキストで使用される場合。
c=100
while let --c; do
# do something while c is non-zero
done
ここにパターンが見えますか?ループは、ゼロ以外の終了状態が返されるwhile
まで実行され、ゼロに達すると返されます。この場合、終了状態がゼロでないことは「エラー」を意味するのではなく、結果に達したという意味にすぎません。let
c
let
0
ただし、これは通常次のように(算術評価)let
に置き換えられます。((...))
c=100
while ((--c)); do ...; done
while
上記のループは組み込みc
ユーティリティlet
です((...))
。