Linuxのコマンドラインを触っていると、ちょっとした計算をしたくなることがあります。例えば、スクリプトの中で変数を使って計算したり、文字列の長さを求めたりする場合です。そんなときに便利なのが、今回紹介するexpr
コマンドです。
expr
は、シンプルな計算や文字列操作ができる便利なコマンドです。このコマンドを使いこなせるようになると、スクリプトがよりパワフルになり、Linuxの操作がさらに楽しくなるでしょう。この記事では、Linux初心者や中級者を対象に、expr
コマンドの基本的な使い方から応用方法までを詳しく解説します。
exprコマンドの基本的な使い方
expr
コマンドは、シェルスクリプトやコマンドラインで数値計算や文字列の操作を行うためのコマンドです。基本的には以下のような形式で使用します。
expr <式>
数値計算の例
まず、簡単な計算から始めてみましょう。expr
は四則演算に対応しており、基本的な計算をシンプルに実行できます。
足し算
expr 5 + 3
出力:
8
引き算
expr 10 - 4
出力:
6
掛け算
掛け算の場合は、*
を使いますが、シェルではアスタリスクが特殊文字として解釈されるため、エスケープする必要があります。
expr 6 \* 7
出力:
42
割り算
expr 20 / 4
出力:
5
余り(剰余演算)
expr 10 % 3
出力:
1
文字列操作の例
expr
は文字列の操作にも便利です。以下にいくつかの例を挙げます。
文字列の長さを求める
文字列の長さを取得するには、length
を使用します。
expr length "Linux"
出力:
5
部分文字列の抽出
文字列の一部を抽出するには、substr
を使います。
expr substr "HelloWorld" 6 5
出力:
World
文字列のパターン検索
特定の文字列が含まれるかどうかを調べるには、match
を使います。
expr match "LinuxRocks" "Linux"
出力:
5
exprコマンドの主要なオプション
expr
コマンド自体はシンプルですが、その中で覚えておくべき主要な機能やオプションをいくつか紹介します。
1. +(加算)
2つの数値を足します。
expr 10 + 5
出力:
15
2. -(減算)
2つの数値を引きます。
expr 15 - 4
出力:
11
3. *(乗算)
2つの数値を掛けます。アスタリスクはエスケープする必要があります。
expr 6 \* 3
出力:
18
4. /(除算)
2つの数値を割ります。
expr 20 / 5
出力:
4
5. %(剰余)
剰余(余り)を求めます。
expr 7 % 3
出力:
1
6. :(文字列マッチ)
正規表現を使って文字列を検索します。
expr "abcd1234" : "abcd[0-9]*"
出力:
8
exprコマンドの応用
スクリプトでの使用例
条件分岐での利用
expr
を使って条件分岐の中で計算を行う例を示します。
#!/bin/bash
x=10
y=20
sum=$(expr $x + $y)
if [ $sum -gt 20 ]; then
echo "合計は20より大きいです"
else
echo "合計は20以下です"
fi
実行結果:
合計は20より大きいです
ループでの利用
カウンタを使ったループ処理で利用する例です。
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "カウント: $count"
count=$(expr $count + 1)
done
実行結果:
カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5
文字列操作の実践例
ファイル名の抽出
ファイル名から拡張子を取り除く例です。
filename="example.txt"
basename=$(expr match "$filename" '\(.*\)\..*')
echo "ベース名: $basename"
実行結果:
ベース名: example
入力文字列の検証
ユーザー入力が数字のみかどうかを確認する例です。
#!/bin/bash
read -p "数字を入力してください: " input
if [ $(expr "$input" : '^[0-9]*$') -eq 0 ]; then
echo "数字ではありません"
else
echo "数字です"
fi
exprコマンドの注意点
expr
は非常に便利なコマンドですが、いくつかの注意点があります。
- スペースが重要:
expr
では、演算子やオペランドの間にスペースを入れる必要があります。スペースがないとエラーになります。
expr 5+3 # エラー
expr 5 + 3 # 正しい
- シェルによるエスケープ:
特殊文字(*
や(
など)を使う場合は、シェルでエスケープする必要があります。 - 制限事項:
expr
は基本的な計算や文字列操作に適している一方で、複雑な処理には不向きです。その場合はPythonやawkなどを検討しましょう。 - 整数のみの計算:
expr
は小数点を扱えません。浮動小数点演算が必要な場合はbc
やその他のツールを使用してください。
まとめ
この記事では、Linuxのexpr
コマンドについて基本的な使い方から応用例までを紹介しました。expr
はシンプルでありながら、数値の計算や文字列の操作、条件分岐など幅広い用途で活用できます。特に、シェルスクリプトの中で計算や文字列操作を行う際には非常に便利です。
Linux初心者や中級者にとって、expr
を使いこなすことでスクリプトのパワーを大幅に向上させることができます。ぜひ、この記事を参考にして、あなたのLinuxスキルをさらに磨いてください!
さらに高度な処理が必要な場合は、awk
やsed
、bc
といった他のツールも併せて学ぶことで、シェルスクリプトの幅をもっと広げることができるでしょう。
コメント