OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / gnumaniak / release / man1 / expr.1
1 .\" You may copy, distribute and modify under the terms of the LDP General
2 .\" Public License as specified in the LICENSE file that comes with the
3 .\" gnumaniak distribution
4 .\"
5 .\" The author kindly requests that no comments regarding the "better"
6 .\" suitability or up-to-date notices of any info documentation alternative
7 .\" is added without contacting him first.
8 .\"
9 .\" (C) 1999-2002 Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com>
10 .\"
11 .\"     GNU expr man page
12 .\"     man pages are NOT obsolete!
13 .\"     <ragnar@ragnar-hojland.com>
14 .\"
15 .\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved.
16 .\" Translated Sun 12 Mar 2000 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
17 .\" Updated & Modified Sat Jan 24 13:37:04 JST 2004
18 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
19 .\"
20 .\"WORD:        token                   トークン
21 .\"WORD:        operand                 オペランド
22 .\"WORD:        null (character)        ナル(文字)
23 .\"WORD:        operator                演算子
24 .\"WORD:        subexpression           副表現
25 .\"
26 .TH expr 1 "18 June 2002" "GNU Shell Utilities 2.1"
27 .SH 名前
28 expr \- 式を評価する
29 .SH 書式
30 .BI "expr " expression...
31 .sp
32 .B expr [\-\-help] [\-\-version]
33 .br
34 .SH 説明
35 .B expr
36 は式を評価し、その結果を標準出力に書き出す。
37 式のトークン (token) はそれぞれ別々の引数で与える必要がある。
38 .P
39 オペランド (operand) は数字または文字列である。
40 .B expr
41 はオペランドの位置に現れたものを、それに対して行われる演算に応じて
42 整数または文字列に変換する。
43 文字列は
44 .B expr
45 ではクォートしなくてよいが、
46 シェルから保護するための引用符が必要かもしれない (スペースなど)。
47 .P
48 演算子は 2 項間に挿入されるシンボルとして、
49 または前置されるキーワードとして与えられる。
50 括弧も通常のようにグループ化に利用できる
51 (しかしシェルによる解釈を避けるためには括弧をクォートしなければならない)。
52 .P
53 .B expr
54 は以下の終了ステータスを返す:
55 .br
56 0: 式がナルでも 0 でもない
57 .br
58 1: 式がナルまたは 0
59 .br
60 2: 式が正しくない
61 .SH 演算子 (優先度順)
62 .SS 関係演算
63 .IP "\fB|\fP"
64 左項がナルでも 0 でもなければ左項を返す。
65 ナルや 0 だった場合は右項を返す。
66 これは通常の `or' 演算にあたる。
67 .IP "\fB&\fP"
68 左項、右項ともナルでも 0 でもなければ左項を返す。
69 それ以外の場合は 0 となる。
70 .IP "\fB<\fP\0 \fB<=\fP\0 \fB=\fP\0 \fB==\fP\0 \fB!=\fP\0 \fB>=\fP\0 \fB>\fP"
71 両項を比較し、関係が真なら 1、偽なら 0 を返す
72 (\fI==\fP は \fI=\fPと同義)。
73 \fBexpr\fP はまず両方の項を数値に変換し、
74 数値的な比較を行おうとする。
75 どちらかの引数が数値に変換できなかった場合は辞書的な比較を行う。
76 .SS 数値演算
77 .IP "\fB+\fP\0 \fB-\fP"
78 代数的な加減算を行う。
79 左右の項は数値に変換され、失敗した場合はエラーとなる。
80 .IP "\fB*\fP\0 \fB/\fP\0 \fB%\fP"
81 代数的な乗算・除算・剰余演算を行う
82 (`%' は C の場合と同じく剰余演算に対応する)。
83 左右の項は数値に変換され、これに失敗した場合はエラーとなる。
84 .SS 文字列演算
85 .IP "\fIstring\fP \fB:\fP \fIregex\fP"
86 パターンマッチを実行する。
87 左右の項は文字列に変換され、
88 右項は (\fBgrep\fP(1) の使う基本的な) 正規表現として扱われる。
89 右項には暗黙のうちに先頭に `^' が自動的に付加され、
90 左項がその正規表現にマッチするかのテストが行われる。
91
92 マッチが成功した場合、
93 正規表現の一部が `\e(' と '\e)' で囲われていれば、
94 \fB:\fP 演算子は \fIstring\fP のうち、
95 副表現 (subexpression) にマッチした部分を返す。
96 それ以外の場合はマッチした部分の文字数が返される。
97
98 マッチに失敗した場合、
99 `\e(' と `\e)' が使われていた場合にはナル文字列が、
100 そうでない場合には 0 が返される。
101
102 `\e(' と `\e)' のペアのうち、最初のものだけが返り値に影響する。
103 それ以外のペアは、正規表現の演算子をグループ化するという意味だけを持つ。
104
105 他の
106 .B expr
107 と異なり、`+' (1 つ以上)、`?' (0 または 1)、`|'
108 (or 接続) もマッチング演算子として認識される。
109 .TP
110 さらに、以下のキーワードも認識される:
111 .TP
112 .BI index " string charset"
113 \fIcharset\fP にあるどれかの文字が \fIstring\fP に見付かれば、
114 その最初に見付かった位置を返す。どの文字も見付からなければ 0 を返す。
115 .TP
116 .BI length " string"
117 \fIstring\fP の長さを返す。
118 .TP
119 .BI match " string regex"
120 パターンマッチを行う別のやり方。
121 これは ``\fIstring\fP \fB:\fP \fIregex\fP'' と同じ。
122 .TP
123 .BI quote " string"
124 \fIstring\fP を (演算子またはキーワードが含まれていても) 通常の文字列とみなす。
125 環境変数 \fBPOSIXLY_CORRECT\fR が設定されていると無効になる。
126 .TP
127 .BI substr " string position length"
128 \fIstring\fP の部分文字列を返す。
129 部分文字列は \fIstring\fP の \fIposition\fP から始まり、
130 最大 \fIlength\fP の長さを持つ。
131 \fIposition\fP や \fIlength\fP が正でなかったり数値でなかった場合は、
132 ナル文字列を返す。
133 .PP
134 括弧は通常のグループ化の意味に用いることができる。
135 キーワード (match, substr, index, length) は文字列として用いることはできない。
136 .SH オプション
137 GNU
138 .B expr
139 が引数 1 つだけで起動された場合には、
140 以下のオプションが認識される:
141 .TP
142 .B "\-\-help"
143 標準出力に使用方法のメッセージを出力して正常終了する。
144 .TP
145 .B "\-\-version"
146 標準出力にバージョン情報を出力して正常終了する。
147 .SH 例
148 .PP
149 シェル変数
150 .I foo
151 に 1 を加える:
152 .IP
153 foo=\`expr $a + 1\`
154 .PP
155 変数
156 .IR bar
157 に格納されているファイル名のうち、
158 ディレクトリ以外の部分を表示する
159 .RI ( bar
160 の値には `/' が含まれていなくても良い):
161 .IP
162 expr $bar : \'.*/\e(\^.*\e)\' \'\^|\' $a
163 .PP
164 文字列 `abc' に文字 `b' をマッチさせる:
165 .IP
166 expr abc : 'a\e(.\e)c'
167 .PP
168 文字列 `abcdef' に `c' または `z' のいずれかが存在している位置を探す:
169 .IP
170 expr index abcdef cz
171 .PP
172 キーワード (index) を文字列として用いている誤った例:
173 .IP
174 expr index index a
175 .PP
176 キーワード (index) を文字列として用いている正しい例:
177 .IP
178 expr index quote index d
179 .SH 注意
180 プログラムのバグについては bug-sh-utils@gnu.org に報告してください。
181 ページの更新は Ragnar Hojland Espinosa
182 <ragnar@ragnar-hojland.com> が行っています。