File: expr.1

package info (click to toggle)
manpages-ja 0.5.0.0.20120606-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 25,964 kB
  • sloc: perl: 161; makefile: 116
file content (182 lines) | stat: -rw-r--r-- 6,886 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
.\" You may copy, distribute and modify under the terms of the LDP General
.\" Public License as specified in the LICENSE file that comes with the
.\" gnumaniak distribution
.\"
.\" The author kindly requests that no comments regarding the "better"
.\" suitability or up-to-date notices of any info documentation alternative
.\" is added without contacting him first.
.\"
.\" (C) 1999-2002 Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com>
.\"
.\"     GNU expr man page
.\"     man pages are NOT obsolete!
.\"     <ragnar@ragnar-hojland.com>
.\"
.\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved.
.\" Translated Sun 12 Mar 2000 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Updated & Modified Sat Jan 24 13:37:04 JST 2004
.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
.\"
.\"WORD:	token			トークン
.\"WORD:	operand			オペランド
.\"WORD:	null (character)	ナル(文字)
.\"WORD:	operator		演算子
.\"WORD:	subexpression		副表現
.\"
.TH expr 1 "18 June 2002" "GNU Shell Utilities 2.1"
.SH 名前
expr \- 式を評価する
.SH 書式
.BI "expr " expression...
.sp
.B expr [\-\-help] [\-\-version]
.br
.SH 説明
.B expr
は式を評価し、その結果を標準出力に書き出す。
式のトークン (token) はそれぞれ別々の引数で与える必要がある。
.P
オペランド (operand) は数字または文字列である。
.B expr
はオペランドの位置に現れたものを、それに対して行われる演算に応じて
整数または文字列に変換する。
文字列は
.B expr
ではクォートしなくてよいが、
シェルから保護するための引用符が必要かもしれない (スペースなど)。
.P
演算子は 2 項間に挿入されるシンボルとして、
または前置されるキーワードとして与えられる。
括弧も通常のようにグループ化に利用できる
(しかしシェルによる解釈を避けるためには括弧をクォートしなければならない)。
.P
.B expr
は以下の終了ステータスを返す:
.br
0: 式がナルでも 0 でもない
.br
1: 式がナルまたは 0
.br
2: 式が正しくない
.SH 演算子 (優先度順)
.SS 関係演算
.IP "\fB|\fP"
左項がナルでも 0 でもなければ左項を返す。
ナルや 0 だった場合は右項を返す。
これは通常の `or' 演算にあたる。
.IP "\fB&\fP"
左項、右項ともナルでも 0 でもなければ左項を返す。
それ以外の場合は 0 となる。
.IP "\fB<\fP\0 \fB<=\fP\0 \fB=\fP\0 \fB==\fP\0 \fB!=\fP\0 \fB>=\fP\0 \fB>\fP"
両項を比較し、関係が真なら 1、偽なら 0 を返す
(\fI==\fP は \fI=\fPと同義)。
\fBexpr\fP はまず両方の項を数値に変換し、
数値的な比較を行おうとする。
どちらかの引数が数値に変換できなかった場合は辞書的な比較を行う。
.SS 数値演算
.IP "\fB+\fP\0 \fB-\fP"
代数的な加減算を行う。
左右の項は数値に変換され、失敗した場合はエラーとなる。
.IP "\fB*\fP\0 \fB/\fP\0 \fB%\fP"
代数的な乗算・除算・剰余演算を行う
(`%' は C の場合と同じく剰余演算に対応する)。
左右の項は数値に変換され、これに失敗した場合はエラーとなる。
.SS 文字列演算
.IP "\fIstring\fP \fB:\fP \fIregex\fP"
パターンマッチを実行する。
左右の項は文字列に変換され、
右項は (\fBgrep\fP(1) の使う基本的な) 正規表現として扱われる。
右項には暗黙のうちに先頭に `^' が自動的に付加され、
左項がその正規表現にマッチするかのテストが行われる。

マッチが成功した場合、
正規表現の一部が `\e(' と '\e)' で囲われていれば、
\fB:\fP 演算子は \fIstring\fP のうち、
副表現 (subexpression) にマッチした部分を返す。
それ以外の場合はマッチした部分の文字数が返される。

マッチに失敗した場合、
`\e(' と `\e)' が使われていた場合にはナル文字列が、
そうでない場合には 0 が返される。

`\e(' と `\e)' のペアのうち、最初のものだけが返り値に影響する。
それ以外のペアは、正規表現の演算子をグループ化するという意味だけを持つ。

他の
.B expr
と異なり、`+' (1 つ以上)、`?' (0 または 1)、`|'
(or 接続) もマッチング演算子として認識される。
.TP
さらに、以下のキーワードも認識される:
.TP
.BI index " string charset"
\fIcharset\fP にあるどれかの文字が \fIstring\fP に見付かれば、
その最初に見付かった位置を返す。どの文字も見付からなければ 0 を返す。
.TP
.BI length " string"
\fIstring\fP の長さを返す。
.TP
.BI match " string regex"
パターンマッチを行う別のやり方。
これは ``\fIstring\fP \fB:\fP \fIregex\fP'' と同じ。
.TP
.BI quote " string"
\fIstring\fP を (演算子またはキーワードが含まれていても) 通常の文字列とみなす。
環境変数 \fBPOSIXLY_CORRECT\fR が設定されていると無効になる。
.TP
.BI substr " string position length"
\fIstring\fP の部分文字列を返す。
部分文字列は \fIstring\fP の \fIposition\fP から始まり、
最大 \fIlength\fP の長さを持つ。
\fIposition\fP や \fIlength\fP が正でなかったり数値でなかった場合は、
ナル文字列を返す。
.PP
括弧は通常のグループ化の意味に用いることができる。
キーワード (match, substr, index, length) は文字列として用いることはできない。
.SH オプション
GNU
.B expr
が引数 1 つだけで起動された場合には、
以下のオプションが認識される:
.TP
.B "\-\-help"
標準出力に使用方法のメッセージを出力して正常終了する。
.TP
.B "\-\-version"
標準出力にバージョン情報を出力して正常終了する。
.SH 例
.PP
シェル変数
.I foo
に 1 を加える:
.IP
foo=\`expr $a + 1\`
.PP
変数
.IR bar
に格納されているファイル名のうち、
ディレクトリ以外の部分を表示する
.RI ( bar
の値には `/' が含まれていなくても良い):
.IP
expr $bar : \'.*/\e(\^.*\e)\' \'\^|\' $a
.PP
文字列 `abc' に文字 `b' をマッチさせる:
.IP
expr abc : 'a\e(.\e)c'
.PP
文字列 `abcdef' に `c' または `z' のいずれかが存在している位置を探す:
.IP
expr index abcdef cz
.PP
キーワード (index) を文字列として用いている誤った例:
.IP
expr index index a
.PP
キーワード (index) を文字列として用いている正しい例:
.IP
expr index quote index d
.SH 注意
プログラムのバグについては bug-sh-utils@gnu.org に報告してください。
ページの更新は Ragnar Hojland Espinosa
<ragnar@ragnar-hojland.com> が行っています。