戻る
gnuのsh-utils付属のexprコマンドのマニュアル。
================================
expr(1) expr(1)
名前
expr - 式を評価する
書式
expr expression...
expr [--help] [--version]
説明
expr は式を評価し、その結果を標準出力に書き出す。式のトー
クン (token) はそれぞれ別々の引数で与える必要がある。
オペランド (operand) は数字または文字列である。 expr は オ
ペランドの位置に現れたものを、それに対して行われる演算に応
じて強制的に整数または文字列として解釈する。文字列は expr
ではクオートしなくてよいが、シェルから保護するための引用符
が必要かもしれない (スペースなど)。
演算子は二項間に挿入されるシンボルとして、または前置される
キーワードとして与えられる。括弧も通常のようにグループ化に
利用できる (しかしシェルによる解釈を避けるためには括 弧 を
クォートしなければならない)。
expr は以下の終了ステータスを返す:
0: 式がナルでも 0 でもない
1: 式がナルまたは 0
2: 式が正しくない
演算子 (優先度順)
関係演算
| 左 項がナルでも 0 でもなければ左項を返す。ナルや 0
だった場合は右項を返す。これは通常の `or' 演算に あ
たる。
& 左項、右項ともナルでも 0 でもなければ左項を返す。そ
れ以外の場合は 0 となる。
< <= = == != >= >
両項を比較し、関係が真なら 1、偽なら 0 を返 す (==
は =と同義)。 expr はまず両方の項を数値とみなして
数値的な比較を行おうとする。どちらかの引数が数値 と
みなせなかった場合は辞書的な比較を行う。
数値演算
+ - 代数的な加減算を行う。左右の項は数値とみなされ、失
敗した場合はエラーとなる。
* / %
代数的な乗算・除算・剰余演算を行う (`%' は C の場合
と同じく剰余演算に対応する)。左右の項は数値とみなさ
れ、これに失敗した場合はエラーとなる。
文字列演算
string : regex
パターンマッチを実行する。左右の項は文字列である と
み なされ、右項は (grep(1) の使う基本的な) 正規表現
として扱われる。右項には暗黙のうちに先頭に `^' が自
動 的に付加され、左項がその正規表現にマッチするかの
テストが行われる。
マッチが成功した場合、正規表現の一部が `\(' と '\)'
で囲われていれば、 : 演算子は string のうち、副表現
(subexpression) にマッチした部分を返す。それ以外 の
場合はマッチした部分の文字数が返される。
マッ チに失敗した場合、 `\(' と `\)' が使われていた
場合にはナル文字列が、そうでない場合には 0 が返され
る。
`\(' と `\)' のペアのうち、最初のものだけが返り値に
影響する。それ以外のペアは、正規表現の演算 子 を グ
ループ化するという意味だけを持つ。
他の expr と異なり、 `+' (1 つ以上)、 `?' (0 または
1)、`|' (or 接続) もマッチング演算子として認識さ れ
る。
さらに、以下のキーワードも認識される:
index string charset
charset にあるどれかの文字が string に見付かれば、
その最初に見付かった位置を返す。どの文字も見付か ら
なければ 0 を返す。
length string
string の長さを返す。
match string regex
パ ター ンマッチを行う別のやり方。これは ``string :
regex'' と同じ。
quote string
string を (演算子またはキーワードが含まれていて も)
通常の文字列とみなす。環境変数 POSIXLY_CORRECT が設
定されていると無効になる。
substr string position length
string の部分文字列を返す。部分文字列は string の
position か ら 始まり、最大 length の長さを持つ。
position や length が正でなかったり数値でなかった場
合は、ナル文字列を返す。
括弧は通常のグループ化の意味に用いることができる。キーワー
ド (match, substr, index, length) は文字列として用いること
はできない。
オプション
GNU expr が引数一つだけで起動された場合には、以下のオプ
ションが認識される:
--help 標準出力に使用方法のメッセージを出力して正常終了 す
る。
--version
標準出力にバージョン情報を出力して正常終了する。
例
シェル変数 foo に 1 を加える:
foo=`expr $a + 1`
変 数 bar に格納されているファイル名のうち、ディレクトリ以
外の部分を表示する (bar の値には `/' が含まれていなくて も
良い):
expr $bar : '.*/\(.*\)' '|' $a
文字列 `abc' に文字 `b' をマッチさせる:
expr abc : 'a\(.\)c'
文字列 `abcdef' に `c' または `z' のいずれかが存在している
位置を探す:
expr index abcdef cz
キーワード (index) を文字列として用いている誤った例:
expr index index a
キーワード (index) を文字列として用いている正しい例:
expr index quote index d
注意
プログラムのバグについては bug-sh-utils@gnu.org に報告して
く だ さ い。 ページの更新は Ragnar Hojland Espinosa が行っています。
GNU Shell Utilities 2.0 18 August 1999 expr(1)