bashincrement: `n = 0;((n ++)); `がエラーを返すのはなぜですか? [コピー]

bashincrement: `n = 0;((n ++)); `がエラーを返すのはなぜですか? [コピー]
n=0;
((n++));echo "ret=$?;n=$n;"
((n++));echo "ret=$?;n=$n;"
((n++));echo "ret=$?;n=$n;"

最初からエラーが返された場合にのみ動作しn=1、問題が発生した状況を使用しています。((n++))
n=0((n++))
trap '' ERR

これはバグですか?

ベストアンサー1

これは、の戻り値が(( expression ))エラー表示に使用されないためです。bashマンページから:

((表現する))

これ表現する下記の規則に従って評価されます。算術評価。式がゼロでないと評価された場合、戻り状態は0で、そうでない場合は戻り状態は1です。これはまったく同じです許す表現する」。

したがって、あなたの場合、式の値ははい0、戻り状態は(( ... ))1です。

おすすめ記事