Skip to content

シェルスクリプトで((i++))は比較の用途でのみ使う

Bash 3.xまでは(少なくともmacOSでは)シェルスクリプトで

Terminal window
set -e
i=0
((i++))

と書いても問題がなかったが、Bash 5.xでは ((expr)) の演算結果が0の場合、set -e によってエラーと扱われて終了する。そのため、冗長だけども正しくは以下のように書く。

Terminal window
set -e
i=0
i=$((i+1))