私が知っているように、until
blockはの反対バージョンですwhile
。
likeuntil "condition A is met"
はと同じですwhile "condition A is not met"
。
python
たとえば、いくつかの現代言語ではwhile
。
それでは、著者はなぜ同時にbourne shell
デザインをuntil
しましたかwhile
?
while
交換できない状況がありますかuntil
?
ベストアンサー1
この構文が派生したBourneシェルには、コマンド否定()演算子はありません!
。したがって、次のことif
ができる場所については大きな問題にはなりません。
if cmd; then
: no-op
else
something if cmd returns false
fi
while
次のような醜い作業を行う必要がある場所に関する質問がたくさんあります。
while cmd; [ "$?" -ne 0 ]; do
...
done
これがより良いようです:
until cmd; do
...
done
ksh
(およびそれを採用したPOSIX(およびbash / zsh ...))を使用すると、sh
次のことができます。
if ! cmd; then
something if cmd fails
fi
while ! cmd; do
...
done
このプロセスでは、終了状態の正確な値が失われます。