Bash/Zsh 二重括弧で increment する際の注意点


検証した環境

  • BASH_VERSION='3.2.57(1)-release'
  • BASH_VERSION='4.3.48(1)-release'

Bash/Zsh で increment するには

こんな感じで 二重括弧 (double parentheses) が使えます。

COUNT=0
(( COUNT ++ ))
echo $COUNT # 1

ただ Bash 環境での、この increment には、注意点がありました...

COUNT=0
(( COUNT ++ ))
echo $? # 1
echo $COUNT # 1

increment は問題なくしてくれるのですが、終了ステータスが 1 として判定されるのです。(何がエラーなのだろうか...)
終了ステータス 1 を常に監視しているような環境では注意したほうがいいかもしれません。。

ちなみに Zsh では正常終了のステータス 0 が返されます。

COUNT=0
(( COUNT ++ ))
echo $? # 0
echo $COUNT # 1

他の書き方ではどうか

COUNT=0 は省略します。全て Bash で試しました。

(( COUNT += 1 ))
echo $? # 0
echo $COUNT # 1
(( COUNT = COUNT + 1 ))
echo $? # 0
echo $COUNT # 1
COUNT=$((COUNT ++))
echo $? # 0
echo $COUNT # 1
COUNT=$((COUNT + 1))
echo $? # 0
echo $COUNT # 1

まとめ

(( COUNT ++ )) は Bash では exit 1 が返るのでご注意を!