Linuxコマンド辞典 letコマンド(ユーティリティ)

算術式を評価して標準出力に出力する「let」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

概要・使用方法

書式

$ let 算術式 [算術式・・・]

与えた算術式を評価します。算術式は「変数=算術式」のように指定します。「1+1」を指定してもletの返り値が「2」になりません。算術式内の変数に計算結果が代入されます。letの返り値は、算術式を評価した結果が「0」もしくはエラー終了の場合に「1」を、結果が「0」以外の場合に「0」を返します。シェルでは「((算術式))」でも同じ結果を得られます。また、exprでも同じような計算ができますが、letのほうが高速に計算できます。

算術式

変数++変数に+(プラス)1する
変数ーー変数に-(マイナス)1する
値1 + 値2値1と値2を加算する
値1 – 値2値1と値2を減算する
値1 * 値2値1と値2を掛け算する
値1 / 値2値1と値2を割り算する
値1 < 値2値1が値2より小さいか比較する。「>」の場合は大きいか比較する
値1 <= 値2値2が値1以上か比較する。「>=」の場合は以下かを比較する
値1 == 値2等値を調べる。「!=」では非等値を調べる
値1 << 値2左ビットシフト。「>>」なら右ビットシフト
値1 & 値2値1と値2のビット単位の論理積(AND)をとる
値1 ^ 値2値1と値2のビット単位の排他的論理和(OR)をとる
値1 | 値2値1と値2のビット単位の論理和(OR)をとる
値1 && 値2値1と値2の論理的ANDをとる
値1 || 値2値1と値2の論理的ORをとる
値1 = 値2値1に値2を代入する
値1 *= 値2値1と値2を掛けた結果を値1に代入する
値1 /= 値2値1を値2で割ったときの結果を値1に代入する
値1 %= 値2値1を値2で割った余りを値1に代入する
値1 += 値2値1と値2を足した結果を値1に代入する
値1 -= 値2値1から値2を引いた結果を値1に代入する
値1 <<= 値2値1を値2ビットだけ左シフトした結果を値1に代入する
値1 >>= 値2値1を値2ビットだけ右シフトした結果を値1に代入する
値1 &= 値2値1と値2をビット単位で論理積演算した結果を値1に代入する
値1 ^= 値2値1と値2をビット単位で排他的論理和演算した結果を値1に代入する
値1 |= 値2値1と値2をビット単位で論理和演算した結果を値1に代入する

演算結果を表示する

$ let 演算式

実行結果

[rin@localhost ~]$ let "ret=1+1"
[rin@localhost ~]$ echo $ret
2
[rin@localhost ~]$ let "ret=100 / 3"
[rin@localhost ~]$ echo $ret
33
[rin@localhost ~]$ let "ret1=1+1" "ret2=2+3" #1行にまとめることもできます。
[rin@localhost ~]$ echo $ret1 $ret2
2 5
[rin@localhost ~]$ 

letの返り値を確認

$ let 演算式

実行結果

[rin@localhost ~]$ a=1;b=1
[rin@localhost ~]$ let a-b
[rin@localhost ~]$ echo $? #評価結果が0になるので返り値は1
1
[rin@localhost ~]$ let a+b
[rin@localhost ~]$ echo $? #評価結果が2になるので返り値は0
0
[rin@localhost ~]$ 

ビット演算

$ let 演算式

実行結果

[rin@localhost ~]$ a=2           #変数aに2(0x0010)をセット
[rin@localhost ~]$ let "b=a<<2"  #変数bにaを2つ左シフトした値をセット
[rin@localhost ~]$ echo $b       #変数bは8(0x1000)
8
[rin@localhost ~]$ let "b<<=2"   #変数bを2つ左にシフトする
[rin@localhost ~]$ echo $b       #変数bは「32」(x0010 0000)を表示する
32
[rin@localhost ~]$