EXPR(1)

名前
expr - 式を評価する

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

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

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

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

|   左項がヌルでも 0 でもなければ左項を返す。ヌルや 0 だった場合は右項を返 す。これは通常の `or' 演算である。

&   左項、右項ともヌルでも 0 でもなければ左項を返す。それ以外の場合は 0 と なる。

<  <=  =  ==  !=  >=  >
    両項を比較し、関係が真なら 1、偽なら 0 を返す（== は = と同義）。 expr はまず両方の項を数値とみなし、数値データとしての比較を行お うとする。これに失敗した場合は、辞書的な比較を行う。

+  -
    代数演算を行う。左右の項は数値とみなされ、失敗した場合はエラーとなる。

*  /  %
    代数演算を行う（`%' は C の場合と同じく剰余演算に対応する）。左右の項 は数値とみなされ、これに失敗した場合はエラーとなる。

:   パターンマッチを実行する。左右の項は文字列であるとみなされ、右項は正規 表現として扱われる。右項には暗黙のうちに先頭に `^' が自動的に付加され、 左項がその正規表現にマッチするかのテストが行われる。マッチが成功した場 合、正規表現の一部が `\(' と '\)' で囲われていた場合にはその部分が : の返り値となり、それ以外の場合はマッチした部分の文字数が返される。マッ チに失敗した場合、 `\(' と `\)' が使われていた場合にはヌル文字が、そ うでない場合には 0 が返される。 `\(' と `\)' のペアは一つだけしか使 うことができない。

さらに、以下のようなキーワードが認識される:

match string regex
    パターンマッチを行う別のやり方。これは ``string : regex'' と同じ。

substr string position length
    string の部分文字列を返す。部分文字列は string の position から始まり、最大 length の長さを持つ。 position または length が負か数値以外の場合は、ヌル文字列 が返る。

index string character-class
    string のうち、character-class の中のどれかの文字が見つかっ た最初の位置を返す。 string の中に character-class のどれ もなかった場合は 0 を返す。

length string
    string の長さを返す。

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

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

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

--version
    バージョン情報を標準出力に表示し、実行成功を返して終了する。

例

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

    a=`expr $a + 1`

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

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

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

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

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