そのまま『++』を付けてもダメ
$ i=1 ; echo ++$i
++1
$ i=1 ; ++$i
-bash: ++1: コマンドが見つかりません
$ i=1 ; ++i
-bash: ++i: コマンドが見つかりません
『(())』または『$(())』で囲むか、
$ i=1 ; ((++i)) ; echo $i
2
$ i=1 ; echo $((++i))
2
ビルトインコマンドの『let』を使う
$ i=1 ; let "++i" ; echo $i
2
インクリメントには『+』『+=』『++』が、
デクリメントには『-』『-=』『–』が使える。
こんな感じ
#!/bin/bash
i=1
echo "---------------"
echo "x=$i , y=$i , z=$i"
echo "-> Increment"
# +
x=$i y=$i z=$i
x=$((x+1))
((y=y+1))
let "z=z+1"
echo "x=$x , y=$y , z=$z"
# +=
x=$i y=$i z=$i
x=$((x+=x))
((y+=y))
let "z+=z"
echo "x=$x , y=$y , z=$z"
# ++
x=$i y=$i z=$i
x=$((++x))
((++y))
let "++z"
echo "x=$x , y=$y , z=$z"
echo "---------------"
echo "x=$i , y=$i , z=$i"
echo "-> Decrement"
# -
x=$i y=$i z=$i
x=$((x-1))
((y=y-1))
let "z=z-1"
echo "x=$x , y=$y , z=$z"
# -=
x=$i y=$i z=$i
x=$((x-=x))
((y-=y))
let "z-=z"
echo "x=$x , y=$y , z=$z"
# --
x=$i y=$i z=$i
x=$((--x))
((--y))
let "--z"
echo "x=$x , y=$y , z=$z"
実行結果はこうなる
$ ./test.sh
---------------
x=1 , y=1 , z=1
-> Increment
x=2 , y=2 , z=2
x=2 , y=2 , z=2
x=2 , y=2 , z=2
---------------
x=1 , y=1 , z=1
-> Decrement
x=0 , y=0 , z=0
x=0 , y=0 , z=0
x=0 , y=0 , z=0