.\" This file documents the GNU shell utilities. .\" .\" Copyright (C) 1994 Free Software Foundation, Inc. .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of .\" this manual under the conditions for verbatim copying, provided that .\" the entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Permission is granted to copy and distribute translations of this .\" manual into another language, under the above conditions for modified .\" versions, except that this permission notice may be stated in a .\" translation approved by the Foundation. .\" .\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved. .\" Translated Thu May 12 1997 by NAKANO Takeo .\" .\"WORD: lexicographic 辞書的な .\" .TH EXPR 1 "GNU Shell Utilities" "FSF" \" -*- nroff -*- .SH 名前 expr \- 式を評価する .SH 書式 .B expr expression... .br .B expr {\-\-help,\-\-version} .br .SH 説明 この文書はもうメンテナンスされていないので、不正確・不完全 な可能性がある。現在は texinfo 文書が正式な情報となっている。 .PP このマニュアルページは GNU 版 .BR expr について記述したものである。 .B expr は式を評価してその結果を標準出力に書き出す。式のトークンはそれぞれ分離 した形で引き数に渡す必要がある。オペランドは数字か文字列である。文字列 は .B expr ではクオートしなくてよいが、シェルから保護するための引用符が必要かもし れない。 .B expr のオペランドの位置に置かれたものは、そのオペランドに対する演算に応じて 数値または文字列とみなされる。 .PP 演算子は以下の通り(優先度の高い順): .IP "\fI|\fP" 左項がヌルでも 0 でもなければ左項を返す。ヌルや 0 だった場合は右項を返 す。これは通常の `or' 演算である。 .IP "\fI&\fP" 左項、右項ともヌルでも 0 でもなければ左項を返す。それ以外の場合は 0 と なる。 .IP "\fI<\fP\0 \fI<=\fP\0 \fI=\fP\0 \fI==\fP\0 \fI!=\fP\0 \fI>=\fP\0 \fI>\fP" 両項を比較し、関係が真なら 1、偽なら 0 を返す(\fI==\fP は \fI=\fP と同義)。 \fBexpr\fP はまず両方の項を数値とみなし、数値データとしての比較を行お うとする。これに失敗した場合は、辞書的な比較を行う。 .IP "\fI+\fP\0 \fI-\fP" 代数演算を行う。左右の項は数値とみなされ、失敗した場合はエラーとなる。 .IP "\fI*\fP\0 \fI/\fP\0 \fI%\fP" 代数演算を行う(`%' は C の場合と同じく剰余演算に対応する)。左右の項 は数値とみなされ、これに失敗した場合はエラーとなる。 .IP "\fI:\fP" パターンマッチを実行する。左右の項は文字列であるとみなされ、右項は正規 表現として扱われる。右項には暗黙のうちに先頭に `^' が自動的に付加され、 左項がその正規表現にマッチするかのテストが行われる。マッチが成功した場 合、正規表現の一部が `\e(' と '\e)' で囲われていた場合にはその部分が .I : の返り値となり、それ以外の場合はマッチした部分の文字数が返される。マッ チに失敗した場合、 `\e(' と `\e)' が使われていた場合にはヌル文字が、そ うでない場合には 0 が返される。 `\e(' と `\e)' のペアは一つだけしか使 うことができない。 .TP さらに、以下のようなキーワードが認識される: .TP .BI match " string regex" パターンマッチを行う別のやり方。これは ``\fIstring\fP \fB:\fP \fIregex\fP'' と同じ。 .TP .BI substr " string position length" \fIstring\fP の部分文字列を返す。部分文字列は \fIstring\fP の \fIposition\fP から始まり、最大 \fIlength\fP の長さを持つ。 \fIposition\fP または \fIlength\fP が負か数値以外の場合は、ヌル文字列 が返る。 .TP .BI index " string character-class" \fIstring\fP のうち、\fIcharacter-class\fP の中のどれかの文字が見つかっ た最初の位置を返す。 \fIstring\fP の中に \fIcharacter-class\fP のどれ もなかった場合は 0 を返す。 .TP .BI length " string" .I string の長さを返す。 .PP 括弧を用いて演算をグループ化することができる。キーワードは文字列として 用いることはできない。 .SS オプション GNU .B expr が引き数一つで実行されたときに限り、以下のオプションが認識される: .TP .I "\-\-help" 使い方に関するメッセージを標準出力に表示し、実行成功を返して終了する。 .TP .I "\-\-version" バージョン情報を標準出力に表示し、実行成功を返して終了する。 .SH 例 .PP シェル変数 .I a に 1 を加えるには以下のようにする: .IP a=\`expr $a + 1\` .PP 以下は変数 .IR a に入っているファイル名のうち、ディレクトリ以外の部分を表示するのに用い ることができる。 ( .IR a に `/' が含まれていなくても良い): .IP expr $a : \'.*/\e(\^.*\e)\' \'\^|\' $a .LP シェルのメタキャラクタをクオートしていることに注意。 .PP .B expr は終了時に以下のような値を返す。 .PP 0: 式がヌルでも 0 でもなかった場合。 .br 1: 式がヌルまたは 0 だった場合。 .br 2: 式が正しくなかった場合。