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 ~]$