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進数の数値として扱われます。