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です。