算術式 $((...)) を使った計算と比較

主要な演算子一覧

Bash の算術式では、C言語に準拠した多くの演算子が利用可能です。

演算子種類
+ - * / %四則演算・剰余a + b, a % b
**べき乗2 ** 3 (結果: 8)
++ --インクリメント・デクリメントi++, --i
+= -= *= /= %=代入演算子a += 5
== != < > <= >=比較(条件判定)a == b, a > 5
&& || !論理演算a > 0 && b < 10

基本的な四則演算

整数の加減乗除と剰余(あまり)を計算できます。

足し算 (+)

code
echo $((10 + 5))
stdout
15

引き算 (-)

code
echo $((10 - 5))
stdout
5

掛け算 (*)

code
echo $((10 * 5))
stdout
50

割り算 (/)

整数のみを扱い、端数は切り捨てられます。

code
echo $((10 / 3))
stdout
3

剰余 (%)

割ったときの「あまり」を計算します。

code
echo $((10 % 3))
stdout
1

小数の計算(注意点)

Bash の算術式展開は「整数のみ」を扱います。小数は計算できず、エラーまたは端数の切り捨てが発生します。

端数の切り捨て

割り算の結果に小数点以下が含まれる場合、その部分は切り捨てられます。

code
echo $((10 / 3))
stdout
3

小数の演算(エラー)

式の中に . を含む小数を記述すると、構文エラーになります。

code
# このコードはエラーになります
echo $((1.5 + 2.0))
stdout
stderr
line 2: 1.5 + 2.0: syntax error: invalid arithmetic operator (error token is ".5 + 2.0")

小数の計算が必要な場合

標準の機能では小数を扱えません。以下は awk を利用して小数の計算を行う例です。

code
awk 'BEGIN { print 1.5 + 2.0 }'
stdout
3.5

変数を使った計算

算術式の中では、変数名に $ を付けずに記述できます。

$ なしでの記述

code
n=10
echo $((n + 5))
stdout
15

$ ありでの記述

code
n=10
echo $(($n + 5))
stdout
15

インクリメント・デクリメント

値を 1 増やしたり減らしたりします。

インクリメント (++)

code
i=10
((i++))
echo $i
stdout
11

デクリメント (--)

code
i=10
((i--))
echo $i
stdout
9

代入演算子

変数の値を更新しながら計算します。

加算代入 (+=)

code
n=10
((n += 5))
echo $n
stdout
15

乗算代入 (*=)

code
n=10
((n *= 2))
echo $n
stdout
20

条件判定としての利用

((...)) を使って、数値の比較を真偽値として判定できます。

数値の比較

code
n=10
if ((n > 5)); then
  echo 'n は 5 より大きいです'
fi
stdout
n は 5 より大きいです

複数の条件判定

code
n=10
if ((n > 5 && n < 20)); then
  echo 'n は 5 より大きく 20 未満です'
fi
stdout
n は 5 より大きく 20 未満です