Scroll to navigation

EXPR(1) General Commands Manual EXPR(1)

名前

expr - 式を評価する

書式

expr expression...
expr {--help,--version}

説明

この文書はもうメンテナンスされていないので、不正確・不完全 な可能性がある。現在は texinfo 文書が正式な情報となっている。

このマニュアルページは GNU 版 expr について記述したものである。 expr は式を評価してその結果を標準出力に書き出す。式のトークンはそれぞれ分離 した形で引き数に渡す必要がある。オペランドは数字か文字列である。文字列 は expr ではクオートしなくてよいが、シェルから保護するための引用符が必要かもし れない。 expr のオペランドの位置に置かれたものは、そのオペランドに対する演算に応じて 数値または文字列とみなされる。

演算子は以下の通り(優先度の高い順):

|
左項がヌルでも 0 でもなければ左項を返す。ヌルや 0 だった場合は右項を返 す。これは通常の `or' 演算である。
&
左項、右項ともヌルでも 0 でもなければ左項を返す。それ以外の場合は 0 と なる。
<  <=  =  ==  !=  >=  >
両項を比較し、関係が真なら 1、偽なら 0 を返す(=== と同義)。 expr はまず両方の項を数値とみなし、数値データとしての比較を行お うとする。これに失敗した場合は、辞書的な比較を行う。
+  -
代数演算を行う。左右の項は数値とみなされ、失敗した場合はエラーとなる。
*  /  %
代数演算を行う(`%' は C の場合と同じく剰余演算に対応する)。左右の項 は数値とみなされ、これに失敗した場合はエラーとなる。
:
パターンマッチを実行する。左右の項は文字列であるとみなされ、右項は正規 表現として扱われる。右項には暗黙のうちに先頭に `^' が自動的に付加され、 左項がその正規表現にマッチするかのテストが行われる。マッチが成功した場 合、正規表現の一部が `\(' と '\)' で囲われていた場合にはその部分が : の返り値となり、それ以外の場合はマッチした部分の文字数が返される。マッ チに失敗した場合、 `\(' と `\)' が使われていた場合にはヌル文字が、そ うでない場合には 0 が返される。 `\(' と `\)' のペアは一つだけしか使 うことができない。
さらに、以下のようなキーワードが認識される:
パターンマッチを行う別のやり方。これは ``string : regex'' と同じ。
string の部分文字列を返す。部分文字列は stringposition から始まり、最大 length の長さを持つ。 position または length が負か数値以外の場合は、ヌル文字列 が返る。
string のうち、character-class の中のどれかの文字が見つかっ た最初の位置を返す。 string の中に character-class のどれ もなかった場合は 0 を返す。
string の長さを返す。

括弧を用いて演算をグループ化することができる。キーワードは文字列として 用いることはできない。

オプション

GNU expr が引き数一つで実行されたときに限り、以下のオプションが認識される:

使い方に関するメッセージを標準出力に表示し、実行成功を返して終了する。
バージョン情報を標準出力に表示し、実行成功を返して終了する。

シェル変数 a に 1 を加えるには以下のようにする:

a=`expr $a + 1`

以下は変数 a に入っているファイル名のうち、ディレクトリ以外の部分を表示するのに用い ることができる。 ( a に `/' が含まれていなくても良い):

expr $a : ´.*/\(.*\)´ ´|´ $a

シェルのメタキャラクタをクオートしていることに注意。

expr は終了時に以下のような値を返す。

0: 式がヌルでも 0 でもなかった場合。
1: 式がヌルまたは 0 だった場合。
2: 式が正しくなかった場合。

GNU Shell Utilities FSF