はじめに
Bash let
算術式の評価に使用されるLinuxシステムの組み込みコマンドです。他の算術評価および拡張コマンドとは異なり、 let
独自の環境を持つ単純なコマンドです。 レット
コマンドは算術拡張も可能にします。
このチュートリアルでは、letコマンドの構文、オプション、および使用例について説明します。

前提条件
- Linuxディストリビューションを実行しているシステム
- ターミナルウィンドウまたはコマンドラインへのアクセス
Bashletステートメントの構文
レット
コマンドは次の基本構文を使用します:
let [expression]
上記の構文では、 expression
let
が必要な算術式です 評価するコマンド。 let
整数を含む式でのみ機能します。コマンドは浮動小数点数をサポートしていません 。
レット
コマンドを使用すると、ユーザーは複数の式を同時に評価できます。この場合、構文は次のとおりです。
let [expression 1] [expression 2] … [expression 3]
算術演算子を使用する
バッシュlet
コマンドは、以下の表の算術演算子を含む式を評価できます。エントリは優先順位の高い順にリストされ、同じ優先順位の演算子が同じ行にリストされます:
オペレーター | 説明 |
var ++ var- | ポストインクリメント(++): 変数の値を解釈し、それに1を追加します。 ポストデクリメント(-): 変数の値を解釈し、そこから1を引きます。 |
++ var -var | プリインクリメント(++): 変数の値に1を加算してから、値を解釈します。 事前デクリメント(-): 変数の値から1を引き、その値を解釈します。 |
-expr + expr | 単項マイナス: 式の値に-1を掛けた値を返します。 単項プラス: 式の値を変更せずに返します(1を掛けます)。 |
! 〜コード> | 論理否定: オペランドがtrueの場合はfalseを返し、オペランドがfalseの場合はtrueを返します。 ビット単位の否定: 数値の2進表現のビットを反転します。 |
** | べき乗: ある整数を別の整数の累乗にします。 |
* / % | 基本的な算術演算子: 乗算。 分割。 剰余(モジュロ)。 |
+ - | 基本的な算術演算子: 添加。 減算。 |
<< >> | ビット単位で左にシフトします。 ビット単位で右にシフトします。 |
<= > = < > | 値の比較: 以下。 以上。 未満。 より大きい。 |
== != | 同等性: オペランドが等しい場合はtrueを返します。 不平等: オペランドが等しい場合はfalseを返します。 |
& | ビット単位のAND: 2つの2進値の対応する桁を乗算します。 |
^ | ビット単位のXOR: 2つのバイナリ値の対応する桁を比較し、桁が異なる場合は1を返します。 |
| | ビット単位のOR: 2つの2進値の対応する桁を比較し、いずれかの桁が1の場合は1を返します。 |
&& | 論理積: 両方のオペランドがtrueの場合、trueを返します。 |
|| | 論理OR: いずれかのオペランドがtrueの場合、trueを返します。 |
expr1? expr2:expr3 | 条件演算子: expr1の場合 trueの場合、 expr2を返します 。 expr1の場合 falseの場合、 expr3を返します 。 |
=、* =、/ =、%=、+ =、-=、<<=、>> =、&=、^ =、| = | 割り当て: 変数に値を割り当てます。 |
Bashletの例
レット
コマンドを使用すると、変数に値を割り当て、算術演算、ビット演算、および論理演算を実行できます。例については、以下のセクションをお読みください。
変数への値の割り当て
let
を使用する 次の変数に値を割り当てるコマンド:
let "[variable] = [value]"
たとえば、値5を変数 var1に割り当てます。 値を出力として出力します:
let "var1 = 5"; echo $var1

同様に、変数値を設定した後、 let
コマンドを使用すると、同じ値を別の変数に割り当てることができます:
let "var1 = 5" "var2=var1"; echo $var2

基本的な算術演算の実行
変数値を設定した後、 let
を使用します 基本的な算術演算を実行するコマンド。たとえば、 var1を設定します 6およびvar2 2として、加算、減算、乗算、除算、およびモジュラスを実行します。
let "var1 = 6" "var2 = 2" "var3=var1+var2"; echo $var3
let "var1 = 6" "var2 = 2" "var3=var1-var2"; echo $var3
let "var1 = 6" "var2 = 2" "var3=var1*var2"; echo $var3
let "var1 = 6" "var2 = 2" "var3=var1/var2"; echo $var3
let "var1 = 6" "var2 = 2" "var3=var1%var2"; echo $var3

この例では、 let
コマンドはvar3の値を設定します 算術演算の結果として、結果を出力します。
べき乗の実行
レット
コマンドでべき乗を実行するには、2つの整数値が必要です 。最初の値( base
)は2乗します( power
):
let "[base] ** [power]"
たとえば、基本値の3を2の累乗に上げて結果を出力するには、次のコマンドを使用します。
let "var1 = 3 ** 2"; echo $var1

単項演算の実行
単項マイナスを使用します let
式を正から負に、またはその逆に変更するコマンド:
let "var1 = 2 + 3" "var1=-var1"; echo $var1

単項プラス 式に1を掛けて、変更されていない値を返します:
let "var1 = 2 + 3" "var1=+var1"; echo $var1

変数値を段階的に変更する
ポストインクリメントの使用 またはポストデクリメント 演算子は変数値を解釈してから、1ずつ増減します。
let "var1 = 10" "var2=var1++"; echo $var1 $var2

上記の例では、変数 var2 var1の値を取得します (10)1増加する前。ポストデクリメントを実行する場合も同じことが起こります。
let "var1 = 10" "var2=var1--"; echo $var1 $var2

事前インクリメントの実行 var1の値を増やします 1(11)で、新しい値を var2に割り当てます。 :
let "var1 = 10" "var2=++var1"; echo $var1 $var2

事前デクリメントの実行 同じことをします。ただし、今回は var1の値が減少します 1(9)で:
let "var1 = 10" "var2=--var1"; echo $var1 $var2

ビットシフトの実行
ビットシフトの実行 let
を使用する コマンドは、2進数の桁の順序を左または右にシフトします。たとえば、数値8の左ビットシフトを2回実行すると、2が2倍になります。
let "var1 = 8 << 2"; echo $var1

逆に、右ビットシフトを2回実行すると、値が2で2回除算されます。
let "var1 = 8 >> 2"; echo $var1

ビット演算の実行
ビット単位の否定 2進数の各桁を反転します。この操作は1を0に、またはその逆に変更します:
let "var1 = 5" "var2=~var1"; echo $var2

上記の例では、letコマンドは5の値を32ビットの符号付き整数(00000000000000000000000000000101)に変換し、数字を反転します。この操作の結果は-6(11111111111111111111111111111010)になります。
ビットごとのAND 演算子は、値のペアを32ビットの符号付き整数に変換し、数字を順番に比較します。アクションは、両方の桁が1の場合は1を返し、それ以外の場合は0を返します。
let "var1 = 5" "var2 = 10" "var3 = var1&var2"; echo $var3

ビットごとのOR 演算子は2つの値の対応する数字を比較し、1を返します。ただし、ビットの少なくとも1つは1でなければなりません。
let "var1 = 5" "var2 = 10" "var3 = var1|var2"; echo $var3

ビット単位のXOR 演算子は、2つの値の対応する数字を比較し、数字が一致する場合は0を返します。それ以外の場合、演算子は1を返します:
let "var1 = 5" "var2 = 10" "var3 = var1^var2"; echo $var3
