HOWTO · Linux

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

Bash で変数のインクリメントとデクリメントを行うには、+ と - 演算子や += と -= 演算子を使用します。また、単項演算子を使ってインクリメントとデクリメントを行うこともできます。++ と -- です。

このページの内容

インクリメントとデクリメント演算はすべてのプログラミング言語で最も広く使われている演算の一つです。主にループ内のカウンタとして使われます。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+=y は x=x+y と同等であり、x-=y は x=x-y と同等です。

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

出力:

x: 4
y: 2

ここでは、最初は x と y の値はともに 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

ここでは、先頭の x と y の値はともに 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 の値をデクリメントします。