Bash でインクリメントとデクリメント演算を行う方法

  1. 演算子 + および - を使ったインクリメントとデクリメント
  2. 演算子 +=-= によるインクリメントとデクリメント
  3. 演算子 ++-- による増分と減分

インクリメントとデクリメント演算はすべてのプログラミング言語で最も広く使われている演算の一つです。主にループ内のカウンタとして使われます。Bash で変数のインクリメントとデクリメントを行うには、+- 演算子や +=-= 演算子を使うことができます。また、単項演算子を使ってインクリメントとデクリメントを行うこともできます。++-- という単項演算子を使うこともできます。

演算子 + および - を使ったインクリメントとデクリメント

これはインクリメントとデクリメントを行う最も簡単な方法である。式を ((...))$(.....)) で囲むか、組み込みの let コマンドを用いて演算を行う。

x=3
y=3
z=3
x=$((x+1))
((y=y+1))
let "z=z+1"
echo x: $x
echo y: $y
echo z: $z

出力:

x: 4
y: 4
z: 4

同じインクリメント操作を + を用いて 3つの異なる方法で実行できることがわかります。

また、同様にデクリメント操作を行うこともできる。

x=3
y=3
z=3
x=$((x-1))
((y=y-1))
let "z=z-1"
echo x: $x
echo y: $y
echo z: $z

出力:

x: 2
y: 2
z: 2

これは - 演算子を使ったデクリメント演算を 3つの異なる方法で実行している。

演算子 +=-= によるインクリメントとデクリメント

演算子 +=, -= は演算子の左辺の値を演算子の右辺の値で増減させる。

x+=yx=x+y と同等であり、x-=yx=x-y と同等である。

x=3
y=3
((x+=1))
let "y-=1"
echo x: $x
echo y: $y

出力:

x: 4
y: 2

ここでは、最初は xy の値はともに 3 である。x のインクリメント操作を行うと、その値は 4 になる。同様に、y のデクリメント操作を行うと、y の値は 2 になる。

また、インクリメントやデクリメントをループで実装することもできる。

x=1

while [ $x -le 5 ]
do
  echo x: $x
  let "x+=1" 
done

出力:

x: 1
x: 2
x: 3
x: 4
x: 5

x の値が 5 以下である限り、x の値をインクリメントする。

演算子 ++-- による増分と減分

演算子 ++-- は一項演算子であり、オペランドの値を 1 ずつ増減させます。

x++x=x+1 と等価であり、x--x=x-1 と等価である。

x=3
y=3
((x++))
let "y--"
echo x: $x
echo y: $y

出力:

x: 4
y: 2

ここでは、先頭の xy の値はともに 3 である。x のインクリメント操作を行うと 4 になる。同様に、y のデクリメント操作を行うと、y の値は 2 になる。

ループ内で ++-- 演算子を実装することもできる。

x=5

while [ $x -ge 1 ]
do
  echo x: $x
  let "x--" 
done

出力:

x: 5
x: 4
x: 3
x: 2
x: 1

x の値が 1 以上である限り、x の値をデクリメントする。

comments powered by Disqus