技術ノート Linux Linux で expr を使用して式を評価する方法

Linux で expr を使用して式を評価する方法

重要なポイント

  • expr コマンドは式を評価し、対応する値を出力できます。これを使用して、算術計算、比較、文字列操作を実行できます。
  • expr コマンドを使用すると、テキスト内の特定のパターンを検索し、ユーザー入力を検証し、定義されたパターンに基づいてテキストを置換することもできます。
  • expr コマンドは、長さの検索、文字列の比較、部分文字列の抽出などの文字列関数を使用して文字列を操作することもできます。

Linux で簡単な計算をしてみませんか? expr コマンドを使用するだけです。このコマンドは、式の評価、部分文字列の抽出、文字列の比較など、さまざまな操作を実行できます。 expr を使用すると、2 つの数値を加算、減算、乗算、または除算し、その答えを出力として取得できます。

expr コマンド

expr は、指定した式に基づいて計算を実行し、文字列を操作できるツールです。 expr コマンドを使用すると、値の比較や 正規表現 を使用した特定のパターンの検索など、整数や文字列に対してさまざまな操作を実行できます。

複数の式をスペースで区切って引数として expr に渡すことができます。式を評価するだけでなく、対応する出力も端末に表示します。 expr コマンドは、 Bash ターミナル シェル スクリプト の両方で機能します。

expr コマンドは、ターミナルを離れることなくデータを操作したり計算を実行したりするときに便利です。ただし、構文と式の順序には注意する必要があります。そうしないと、コマンドが失敗し、エラー メッセージが表示されます。

expr コマンドの構文は次のとおりです。

 expr expression

… ここで、式は引数と演算子の組み合わせになります。たとえば、以下の式は arg1 と arg2 の間の演算を評価し、結果を表示します。

 expr arg1 operator arg2

引数は、演算子に応じて数値または文字列になります。演算子には、算術演算、関係演算子、文字列関連演算子、または論理演算子を使用できます。実行する操作を指定する記号です。たとえば、整数の場合は、+、-、*、/、% などの演算子を使用できます。

文字列の場合、正規表現と文字セットを使用して、一致とインデックスを検索できます。括弧を使用して式をグループ化したり、バックスラッシュを使用して特殊文字をエスケープしたりすることもできます。

Linux で expr を使用して式を評価する方法

expr コマンドのオプション

expr には従来のコマンドライン オプションがありませんが、算術、文字列操作、比較のための多用途の演算子が用意されています。さらに、 –help オプションを使用すると、expr の構文、機能、例を説明するヘルプ ページを表示できます。

 expr --help

expr コマンドのバージョンを確認するには、次を実行します。

 expr --version

このオプションでは、expr のバージョン番号、ソース コード、ライセンス、および作成者が表示されます。

Linux で expr を使用して式を評価する方法

expr を使用した算術演算の実行

基本的な算術演算に expr コマンドを使用するには、コマンド expr の後にスペースを記述します。次に、評価する式を記述します。この式は、整数と +、-、*、/ などの演算子を組み合わせたものです。式内の各トークン (整数または演算子) は必ずスペース文字で区切ってください。

たとえば、expr を使用して 15 と 12 の合計を調べたい場合は、次のように記述できます。

 expr 15 + 12

同様に、 expr コマンドを使用して、減算、乗算、除算などの他の算術演算を実行できます。 expr コマンドを使用していくつかの式を評価してみましょう。

 expr 15 - 12
expr 15 \* 5
expr 10 / 2

シェルの展開を避けるために、乗算 (*) 演算子をバックスラッシュ (\) でエスケープする必要があります。それ以外の場合、シェルは演算子 (*) を現在のディレクトリ内のファイル名と照合し、それらを expr コマンドに渡そうとするため、エラーが発生します。

引数と演算子を適切に引用符で囲むことにより、シェルが文字を解釈しないようにすることもできます。

 expr "5" "*" "3"
Linux で expr を使用して式を評価する方法

expr を使用した 2 つの式の比較

expr コマンドを使用して 2 つの式を比較するには、=、<、>、!= などの論理演算子を使用できます。コマンド出力 1 が表示された場合、条件は true、それ以外の場合は false、返される値は 0 です。

たとえば、最初の引数が 2 番目の引数と等しいかどうかを確認するには、= 演算子を使用します。

 expr 40 = 50

ここで、最初の引数が他の引数より小さいかどうかを確認してみましょう。そのために、< 演算子を使用します。

 expr 40 \< 50

値が等しくないかどうかを確認することもできます。これを行うには、2 つの引数の値の間に != 演算子を使用するだけです。

 expr 45 \!= 55

ここで、出力 1 は、45 が 55 に等しくないことを示します。

このように、expr コマンドは数値を比較するための簡単かつ効果的な方法を提供します。

乗算 (*) 演算子と同様に、<、>、および != 演算子もバックスラッシュ (\) でエスケープする必要があります。そうしないと、シェルによって特殊文字として解釈される可能性があります。

「 Linux で expr を使用して式を評価する方法」に関するベスト動画選定!

これで安心‼Linuxのセキュリティー対策 ~ずんだもんのLinux「使ってみた」第6回~
【すぐできる!】誰でも簡単!Linux をコマンド操作してみよう! #1 パッケージ管理 #Linux #APT
Linux で expr を使用して式を評価する方法

expr を使用して文字列の長さを調べる

expr コマンドを使用して文字列の長さを調べるには、length メソッドを使用できます。この演算子は、指定された文字列に存在する文字数を出力に返します。

たとえば、文字列「How To Geek」の長さを確認するには、次のコマンドを実行します。

 expr length 'How To Geek'

文字列には 9 つの文字と 2 つの空白があるため、出力は 11 になります。空白を含まない文字列の長さを調べたい場合は、 tr awk などの他のコマンドを使用して、最初に空白を削除します。例えば:

 expr length " $(echo 'How To Geek' | tr -d ' ') "

tr コマンドは文字列内のすべてのスペースを削除してから expr length コマンドに渡すため、出力は 9 になります。

Linux で expr を使用して式を評価する方法

2 つの文字列を expr と照合する

expr が提供する演算の 1 つは、2 つの文字列の比較です。このためには、expr コマンドでコロン (:) 演算子を使用します。この演算子は、両方の文字列の先頭で一致する文字の数を返します。

この演算子を使用するための構文は次のとおりです。

 expr string1 : string2

これは 2 つの文字列を比較し、文字列の先頭から一致する文字の数を返します。

たとえば、両方の文字列の最初の 5 文字が共通しているため、次のコマンドは 5 を出力します。

 expr 'HowToGeek' : 'HowTo'

指定された 2 つの文字列が同じである別の例を考えてみましょう。

 expr 'How To Geek' : 'How To Geek'

両方の文字列に空白を含む共通の文字がすべて含まれているため、出力は 11 になります。

一致する文字が存在しない場合、出力はゼロになります。

 expr 'How To Geek' : 'Linux'
Linux で expr を使用して式を評価する方法

expr を使用した変数のインクリメントとデクリメント

expr コマンドは、変数の値を増減する式を評価することもできます。さらに、結果を新しい変数に割り当てることができます。

以下の例を考えてみましょう。変数「a」を定義し、expr コマンドを使用してその値をインクリメントしています。

 a=20
a= `expr $a + 1`
echo $a

同様に、変数値をデクリメントするには、同じ構文を使用しますが、加算記号を減算に置き換えます。

 a=20
a= `expr $a - 1`
echo $a

expr を使用した部分文字列の抽出

指定された文字列から部分文字列を抽出するには、expr コマンドと substr 演算子を使用します。このようにして、大きなテキストから名前、日付、コードなどの特定の情報を抽出できます。この演算子を使用して、文字列から不要な文字やスペースを削除することもできます。

新しい文字列が初期化される次のコマンド例を考えてみましょう。その後、 expr コマンドを使用して、文字列「HowToGeek」から 2 番目から 5 番目の文字を取得します。

 a=HowToGeek
b= `expr substr $a 2 5`
echo $b

シェルスクリプトを使用した expr 操作の実行

expr コマンドを使用して式の処理を自動化するには、カスタム シェル スクリプトを作成できます。シェル スクリプトは、少ない労力でより多くのことを実行できる多目的ツールです。シェル スクリプトを使用すると、反復的なタスクを自動化し、データを操作し、複雑な計算を実行できます。

たとえば、expr コマンドを使用して 2 つの数値を加算するスクリプトを作成できます。まず、「my_script.sh」など、「.sh」拡張子を持つファイルを作成する必要があります。これにより、それがスクリプト ファイルであることがシェルに伝えられます。次に、2 つの数値を入力として受け取り、その合計を出力できるコードを作成する必要があります。これを実行できるサンプル スクリプトを次に示します。

 echo "Enter two numbers"
read a
read b
sum=`expr $a + $b`
echo "Sum of two numbers is= $sum "

このスクリプトは、expr コマンドを使用して変数「a」と「b」の算術演算を評価します。 echo コマンドはメッセージを標準出力に出力し、read コマンドは標準入力から 1 行を読み取り、それを変数に入れます。

次に、このスクリプトを実行可能にするために、 chmod コマンドを実行します。

 chmod + x my_script .sh

次に、次のコマンドを実行してスクリプトの実行を続行します。

 ./my_script.sh

2 つの数字を入力するよう求められます。数値を入力すると、スクリプトによって両方の数値の合計が画面に表示されることがわかります。必要に応じてスクリプトを変更して、他の操作やタスクを実行することもできます。

代替の Linux コマンドをいくつか試してみる

この記事では主に expr コマンドに焦点を当てていますが、さまざまな操作のために他のいくつかのコマンドを試すこともできます。これらのコマンドには、declare、let、および bc が含まれます。これらのコマンド ライン ツールはすべて、定義された値に対して単純な数学演算から複雑な数学演算まで実行できます。

宣言コマンドは、変数とその属性を作成および変更できます。同様に、let コマンドはシェル変数の算術式を評価します。最後に、bc は、任意精度の算術演算とさまざまな数学関数をサポートするコマンド ライン電卓です。また、ループ、条件文、変数をサポートするスクリプト言語を解析することもできます。