Linuxでスクリプトを書くとき、ちょっとした計算が必要になる場面は意外と多いものです。そんなとき便利なのが、シェルで簡単に使える算術演算コマンド「let
」。シンプルな構文で直感的に使えるこのコマンドは、数値の加減乗除はもちろん、条件分岐やループ処理の中でも活躍します。この記事では、let
コマンドの基本的な使い方から実践的な例まで、初心者でもわかりやすいように丁寧に解説していきます。
letコマンドとは?
let
は、bashなどのシェル上で整数の算術演算を行うためのビルトインコマンドです。式の評価を行い、変数への代入も含めて一行で完結するのが特徴です。演算結果はシェル変数に格納でき、他の処理と組み合わせて柔軟に利用することができます。
例えば、次のように使います。
let a=5+3
echo $a # 出力:8
このように、シンプルな足し算もワンライナーで完結します。
基本的な使い方
1. 加算・減算・乗算・除算
let
では、一般的な四則演算が使えます。
let a=10+5 # a=15
let b=10-3 # b=7
let c=4*6 # c=24
let d=20/4 # d=5
注意点としては、変数名の前に「$」は付けない点と、変数同士の演算でも同様です。
let x=8
let y=2
let z=x*y
echo $z # 出力:16
2. インクリメント・デクリメント
let
では変数のインクリメントやデクリメントも簡単です。
let count=10
let count++ # count = 11
let count-- # count = 10 に戻る
C言語のような文法を意識した書き方ができるのが特徴です。
クォーテーションの使用と省略
複雑な式や記号を含む場合、クォーテーション(シングルまたはダブル)で囲うことで安全に実行できます。
let "x = 5 + 7"
let 'y = x * 2'
クォーテーションは必須ではありませんが、エラーを防ぐために式が複雑なときは使うのがベターです。
letの戻り値と条件式での使い方
let
はコマンドなので、戻り値(終了ステータス)を使った条件判断も可能です。
let "a = 5 > 3"
echo $? # 出力:1(false扱い)
一見混乱しがちですが、実は let
は「0を返せばtrue、0以外を返せばfalse」という扱いになります。逆のように見えますが、シェルスクリプトの構文上はこう解釈されます。
条件分岐で使う例:
let "x = 10"
let "x % 2"
if [ $? -eq 0 ]; then
echo "xは偶数です"
else
echo "xは奇数です"
fi
実用的な使用例
ループでの使用
インクリメント処理などでlet
はよく使われます。
count=0
while [ $count -lt 5 ]; do
echo "Count: $count"
let count++
done
このように、ループのカウンタ操作として頻繁に登場します。
ファイルの行数をカウントして表示
file="sample.txt"
lines=$(wc -l < "$file")
let "half = lines / 2"
echo "ファイルの半分の行数は $half 行です"
ファイル操作と組み合わせての応用も可能です。
letと他の算術演算手法の比較
Linuxシェルには、let
のほかにも算術演算を行う方法がいくつかあります。
$(( ))との比較
a=5
b=$((a + 3))
この方法は最近のシェルスクリプトでは一般的で、let
よりも直感的に見えるという意見もあります。ただし、どちらも同様の結果が得られます。
exprとの違い
expr
は外部コマンドであり、let
よりもやや古いスタイルです。
a=$(expr 5 + 3)
expr
はスペースを区切りとして使うため、間違いやすいというデメリットもあります。
よくあるエラーと対処法
スペースに注意
次のような記述はエラーになります。
let x = 1 + 1 # エラーになる可能性あり
これは、シェルが x
=
1
+
1
を別々の引数と解釈してしまうためです。クォーテーションで囲うことで解決します。
bashコピーする編集するlet "x = 1 + 1" # 正しい
小数の扱いに注意
let
は整数のみに対応しており、小数点の演算はできません。
let x=10/3
echo $x # 出力:3(小数点以下は切り捨て)
小数点を扱いたい場合はbc
などのツールを使いましょう。
letはどんなときに便利か?
- 小規模な計算をスクリプト内で行いたいとき
- 条件分岐やループの中でインクリメント操作をしたいとき
- 変数の中身を数値として処理したいとき
大規模な数値処理や精密な演算には向きませんが、軽量でシンプルな用途にはぴったりのツールです。
まとめ
let
コマンドは、Linuxシェルスクリプトにおけるちょっとした数値処理にとても役立ちます。直感的に使える構文で、ループや条件分岐の中でも扱いやすく、スクリプトの可読性も損ないません。
ただし、小数点の処理には向かないなどの制限もあるため、用途に応じて他の演算方法($(( ))
やbc
)と使い分けるのがおすすめです。基本的な使い方を押さえれば、日々のスクリプト作成がぐっと楽になります。
シンプルで軽快なlet
コマンド、ぜひ活用してみてください。