Linux, コマンド · 1 min read · Sep 20, 2025
初心者のためのLinux exprコマンドチュートリアル(例付き)
時々、コマンドラインで作業していると(特にシェルスクリプトを扱っているとき)、文字列内の部分文字列を検索したり、そのインデックスを見つけたり、比較や算術演算を行ったりする必要がある状況に直面することがあります。
知らない方のために、これを行うためのコマンドラインユーティリティ - expr - が存在します。このチュートリアルでは、このコマンドの基本とその提供するいくつかの機能について説明します。ここで言及されているすべての例と指示は、Ubuntu 16.04LTSでテストされています。
Linux exprコマンド
ツールの公式ドキュメントによれば、これは式を評価するために使用されます。以下がexprコマンドの構文です:
expr EXPRESSION
expr OPTION以下は、このツールがどのように機能するかを理解するためのQ&Aスタイルの例です。
Q1. exprを使用して算術演算を行うにはどうすればよいですか?
たとえば、2つの数(5と6)を加算したい場合、以下のようにexprを使用できます:
expr 5 + 6以下は、上記のコマンドの実行結果です:

出力に’11’という合計が生成されたことがわかります。演算子(この場合は’+’)の両側に1つのスペースが必要であることに注意してください。そうしないと、exprコマンドは以下の出力を生成します:

これは明らかに間違っており、期待される結果ではありません。
同様に、減算演算は以下のように実行できます:
expr 15 - 6以下は、除算の例です:
expr 10 / 3前述のコマンドは出力に3のみを生成します。余りを表示したい場合は、%演算子を使用してください。
expr 10 % 3
乗算は理想的には以下のように実行されるべきです:
expr 10 * 3しかし、これは機能しません。なぜなら、*は組み込みのシェル演算子でもあるからです。したがって、乗算演算子として機能させるためには、以下のようにエスケープ文字を前に付ける必要があります:
expr 10 \* 3
Q2. exprを使用して比較演算を行うにはどうすればよいですか?
exprコマンドは、さまざまな方法で比較演算を行うこともできます。たとえば、以下のコマンド(下のスクリーンショットの3番目)は、ARG1がnullでも0でもない場合にARG1を返し、そうでない場合はARG2を返します。

パイプの前のバックスラッシュは、パイプがそうでない場合に組み込みのシェル演算子として扱われるため、エスケープ文字として使用されることに注意してください。
同様に、多くの演算を実行できます。以下のスクリーンショット - コマンドのmanページから取得したもの - は、exprコマンドでどのような比較ができるかについて良いアイデアを提供するはずです。

Q3. exprを使用して文字列関連の操作を行うにはどうすればよいですか?
exprコマンドは、いくつかの文字列関連の操作を実行することもできます。たとえば、文字列の長さを見つけるには、以下のようにツールを使用できます:
expr length [string]
文字列にスペースが含まれている場合は、エスケープ文字を使用する必要があります。

次に、exprを使用して指定された文字列内の部分文字列を抽出することもできます。以下がその構文です:
expr substr [string] [pos] [length]
たとえば、’howtoforge’から’forge’を取得するには、以下のようにツールを使用できます:

さらに、exprを使用して指定された文字列内の一連の文字の開始インデックスを見つけることもできます。以下がその構文です:
expr index [string] [chars]
たとえば、’howtoforge’内の’wt’のインデックスを見つけるには、以下のようにexprを使用します:

結論
あなたも同意すると思いますが、exprは機能が豊富なコマンドですが、理解しやすく、使いやすいです。このチュートリアルでは、提供される基本機能のほとんどに関する情報を提供しようとしました。これらの練習が終わったら、ツールのmanページにアクセスしてさらに学ぶことができます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。