Bashスクリプトを作成する際の最も一般的な算術演算の1つは、変数のインクリメントとデクリメントです。これは、ループでカウンターとして最も頻繁に使用されますが、スクリプトの他の場所でも発生する可能性があります。
インクリメントとデクリメントとは、値を加算または減算することを意味します(通常は1 )、それぞれ、数値変数の値から。算術展開は、二重括弧((...))を使用して実行できます。 および$((...)) またはlet 組み込みコマンド。
Bashでは、変数をインクリメント/デクリメントする方法が複数あります。この記事ではそれらのいくつかについて説明します。
+の使用 および-- 演算子#
変数をインクリメント/デクリメントする最も簡単な方法は、+を使用することです。 および-- 演算子。
i=$((i+1))
((i=i+1))
let "i=i+1"
i=$((i-1))
((i=i-1))
let "i=i-1"
このメソッドを使用すると、変数を任意の値でインクリメント/デクリメントできます。
これは、until内の変数をインクリメントする例です。 ループ:
i=0
until [ $i -gt 3 ]
do
echo i: $i
((i=i+1))
done
i: 0
i: 1
i: 2
i: 3
+= および-= 演算子#
上で説明した基本的な演算子に加えて、bashは代入演算子+=も提供します および-= 。これらの演算子は、左側のオペランドの値を、演算子の後に指定された値でインクリメント/デクリメントするために使用されます。
((i+=1))
let "i+=1"
((i-=1))
let "i-=1"
次のwhile ループ、iの値をデクリメントしています 5による変数 。
i=20
while [ $i -ge 5 ]
do
echo Number: $i
let "i-=5"
done
Number: 20
Number: 15
Number: 10
Number: 5
++の使用 および-- 演算子#
++ および-- 演算子は、オペランドをそれぞれ1だけインクリメントおよびデクリメントします。 値を返します。
((i++))
((++i))
let "i++"
let "++i"
((i--))
((--i))
let "i--"
let "--i"
演算子は、オペランドの前または後に使用できます。別名:
- プレフィックスの増分:
++i - プレフィックスのデクリメント:
--i - 接尾辞の増分:
i++ - 後置デクリメント:
i--
プレフィックス演算子は、最初に演算子を1だけインクリメント/デクリメントします 次に、演算子の新しい値を返します。一方、接尾辞演算子は、インクリメント/デクリメントされる前に演算子の値を返します。
変数をインクリメント/デクリメントするだけの場合は、プレフィックス演算子またはポストフィックス演算子を使用しても違いはありません。演算子の結果が他の操作で使用されているか、別の変数に割り当てられている場合にのみ、違いが生じます。
次の例は、++ 演算子は、オペラントの前後で使用される場合に機能します:
x=5
y=$((x++))
echo x: $x
echo y: $y
x: 6
y: 5
x=5
y=$((++x))
echo x: $x
echo y: $y
x: 6
y: 6
以下は、bashスクリプトで接尾辞インクリメンターを使用する方法の例です。
#!/bin/bash
i=0
while true; do
if [[ "$i" -gt 3 ]]; then
exit 1
fi
echo i: $i
((i++))
done
これらの演算子を使用することの欠点は、変数が1によってのみインクリメントまたはデクリメントできることです。 。
結論#
Bashの変数のインクリメントとデクリメントは、さまざまな方法で実行できます。どの方法を使用しても、結果は同じです。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。