letコマンドは、bashの組み込みコマンドで変数の算術演算を行うことができます。変数の算術演算をする場合は変数のパラメータ展開を行う必要はありません。
算術演算は整数値、変数がnullや未設定の場合は値は0として扱われます。
letコマンドの利用例
letコマンドは引数に式を取ることで算術演算を行うことができます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 |
$var1=3 $var2=4 $let result=var1+var2 $echo $result 7 $let var3=4,var4=5 $let 'result1 = var3 - var4' 'result2 = var3 * var4' $echo $result1 $result2 -1 20 |
bashの算術演算
bashの算術演算に利用できる演算子は以下の表のとおりになります。
演算子の優先順位は表の上に記述されているものが高く、下に記述されているものが低くなります。
bashの演算子
演算子 | 意味 |
var++ var-- |
後置インクリメント(post-increment) 後置デクリメント(post-decrement) |
++var --var |
前置インクリメント(pre-increment) 前置デクリメント(pre-decrement) |
-var +var |
単項演算子 |
! ~ |
論理否定 ビット反転 |
** | べき乗 |
* / % |
乗算 除算 剰余演算 |
+ - |
加算 減算 |
<< >> |
ビットシフト |
<= >= < > |
比較(大小) |
== != |
比較(等しい) 比較(等しくない) |
& | ビット演算 AND |
^ | ビット演算 EOR(XOR) |
| | ビット演算 OR |
&& | 論理演算 AND |
|| | 論理演算 OR |
expr ? expr : expr | 3項演算子(条件演算子) |
= *= /= %= += -= <<= >>= &= ^= |= |
代入演算子 |
expr1,expr2 | コンマ演算子(順次演算子) |
基数
16進数の数値を扱う場合、数値の頭に'0x'または'0X'を入れることでその数値を16進数の値として扱うことができます。
1 2 3 |
$let result=0xb0de $echo $result 45278 |
別の基数を扱う場合は、数値の頭に'base#'のように入れます。baseの値は2~64までの数値になります。基数が11以上の時、10以上の数値については、順番にアルファベットの小文字、大文字、'@'、'_'の文字を利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$let result=2#10110011 $echo $result 179 $let result=64#Z $echo $result 61 $let result=64#@ $echo $result 62 $let result=64#_ $echo $result 63 $let result=64#Z@_ $echo $result 253887 |
一般的な数値のように、頭に'base#'の文字がない場合は10進数の数値として扱われます。