OSDN Git Service

Update release for LDP 3.67
[linuxjm/LDP_man-pages.git] / release / man3 / wordexp.3
1 .\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
2 .\"
3 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
4 .\" This is free documentation; you can redistribute it and/or
5 .\" modify it under the terms of the GNU General Public License as
6 .\" published by the Free Software Foundation; either version 2 of
7 .\" the License, or (at your option) any later version.
8 .\"
9 .\" The GNU General Public License's references to "object code"
10 .\" and "executables" are to be interpreted as the output of any
11 .\" document formatting or typesetting system, including
12 .\" intermediate and printed output.
13 .\"
14 .\" This manual is distributed in the hope that it will be useful,
15 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
16 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 .\" GNU General Public License for more details.
18 .\"
19 .\" You should have received a copy of the GNU General Public
20 .\" License along with this manual; if not, see
21 .\" <http://www.gnu.org/licenses/>.
22 .\" %%%LICENSE_END
23 .\"
24 .\"*******************************************************************
25 .\"
26 .\" This file was generated with po4a. Translate the source file.
27 .\"
28 .\"*******************************************************************
29 .\"
30 .\" Japanese Version Copyright (c) 2004 Yuichi SATO
31 .\"         all rights reserved.
32 .\" Translated Sun Sep 12 05:05:19 JST 2004
33 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
34 .\"
35 .TH WORDEXP 3 2008\-07\-14 "" "Linux Programmer's Manual"
36 .SH 名前
37 wordexp, wordfree \- posix シェルのように単語の展開を行う
38 .SH 書式
39 \fB#include <wordexp.h>\fP
40 .sp
41 \fBint wordexp(const char *\fP\fIs\fP\fB, wordexp_t *\fP\fIp\fP\fB, int \fP\fIflags\fP\fB);\fP
42 .sp
43 \fBvoid wordfree(wordexp_t *\fP\fIp\fP\fB);\fP
44 .sp
45 .in -4n
46 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
47 .in
48 .sp
49 \fBwordexp\fP(), \fBwordfree\fP(): _XOPEN_SOURCE
50 .SH 説明
51 関数 \fBwordexp\fP()  はシェルのように文字列 \fIs\fP を展開し、 \fIp\fP で指し示す構造体に結果を返す。 データ型
52 \fIwordexp_t\fP は少なくともフィールド \fIwe_wordc\fP, \fIwe_wordv\fP, \fIwe_offs\fP を持つ構造体である。
53 フィールド \fIwe_wordc\fP は \fIsize_t\fP であり、 \fIs\fP を展開した結果に単語がいくつあるかを表す。 フィールド
54 \fIwe_wordv\fP は \fIchar\ **\fP であり、見つかった単語の配列を指し示す。 \fIsize_t\fP 型のフィールド \fIwe_offs\fP
55 は、 \fIwe_wordv\fP 配列にある初期要素のうちいくつが NULL で埋められるべきかを表すのに使われたりする (\fIflags\fP
56 により決定される。下記を参照。)。
57 .LP
58 関数 \fBwordfree\fP()  は割り当てたメモリを再度解放する。 より正確にいうと、この関数はその引き数を解放するのではなく、 配列
59 \fIwe_wordv\fP とそれが指し示す文字列を解放する。
60 .SS 文字列引き数
61 この展開はシェルによるコマンドのパラメータの展開 (\fBsh\fP(1)  を参照) と同じであるので、文字列 \fIs\fP
62 はシェルコマンドパラメータで不正とされる文字を含んではならない。 特にエスケープされていない改行、|, &, ;, <, >, (,
63 ), {, } 文字を コマンド置換やパラメータ置換の場面以外に含めてはならない。
64 .LP
65 引き数 \fIs\fP にクォートしていないコメント文字 # で始まる単語が含まれている場合には、 その単語とそれ以降の単語が無視されるか、 それとも #
66 がコメント文字として扱わないかは、規定されていない。
67 .SS 展開
68 実行される展開は、以下の段階で構成される: チルダ展開 (~user を user のホームディレクトリに置き換える)、 変数展開 ($FOO
69 を環境変数 FOO の値に置き換える)、 コマンド展開 ($(command) または \`command\` を command
70 の出力で置き換える)、 算術展開、フィールド分割、ワイルドカード展開、クォートの除去。
71 .LP
72 特殊なパラメータ ($@, $*, $#, $?, $\-, $$, $!, $0) の 展開結果は規定されていない。
73 .LP
74 フィールド分割は環境変数 $IFS を用いて行われる。 この環境変数が設定されていない場合、 フィールド区切り文字はスペース・タブ・改行である。
75 .SS 出力される配列
76 配列 \fIwe_wordv\fP は見つかった単語をを含み、最後に NULL が続く。
77 .SS "flags 引き数"
78 \fIflags\fP 引き数は以下の値のビット包含的 OR である:
79 .TP 
80 \fBWRDE_APPEND\fP
81 見つかった単語を前回の呼び出し結果の配列に追加する。
82 .TP 
83 \fBWRDE_DOOFFS\fP
84 初期状態である \fIwe_offs\fP 個の NULL を配列 \fIwe_wordv\fP に挿入する (これらは返される \fIwe_wordc\fP
85 にはカウントされない)。
86 .TP 
87 \fBWRDE_NOCMD\fP
88 コマンド置換を行わない。
89 .TP 
90 \fBWRDE_REUSE\fP
91 引き数 \fIp\fP は前回の \fBwordexp\fP()  の呼び出し結果であり、 \fBwordfree\fP()  が (まだ) 呼び出されない。
92 割り当てられた領域を再利用する。
93 .TP 
94 \fBWRDE_SHOWERR\fP
95 通常はコマンド置換のときに \fIstderr\fP が \fI/dev/null\fP にリダイレクトされる。 このフラグは \fIstderr\fP
96 をリダイレクトしないように指定する。
97 .TP 
98 \fBWRDE_UNDEF\fP
99 未定義のシェル変数を展開しようとした場合に、エラーとして扱う。
100 .SH 返り値
101 成功した場合は 0 が返される。 エラーの場合は以下の 5 つの値のうちの 1 つが返される。
102 .TP 
103 \fBWRDE_BADCHAR\fP
104 改行または |, &, ;, <, >, (, ), {, } のうちの 1 つが不正に出現した。
105 .TP 
106 \fBWRDE_BADVAL\fP
107 未定義のシェル変数が参照され、かつ \fBWRDE_UNDEF\fP フラグでこれをエラーとして扱うように指示されている。
108 .TP 
109 \fBWRDE_CMDSUB\fP
110 コマンド置換が起こり、かつ \fBWRDE_NOCMD\fP フラグでこれをエラーとして扱うように指示されている。
111 .TP 
112 \fBWRDE_NOSPACE\fP
113 メモリが足りない。
114 .TP 
115 \fBWRDE_SYNTAX\fP
116 対応する括弧がない、クォートが合致しないといった、 シェルの書式エラー。
117 .SH バージョン
118 \fBwordexp\fP()  と \fBwordfree\fP()  は、バージョン 2.1 以降の glibc で提供されている。
119 .SH 準拠
120 POSIX.1\-2001.
121 .SH 例
122 以下のサンプルプログラムの出力はだいたい "ls [a\-c]*.c" と同じになる。
123 .LP
124 .nf
125 #include <stdio.h>
126 #include <stdlib.h>
127 #include <wordexp.h>
128
129 int
130 main(int argc, char **argv)
131 {
132     wordexp_t p;
133     char **w;
134     int i;
135
136     wordexp("[a\-c]*.c", &p, 0);
137     w = p.we_wordv;
138     for (i = 0; i < p.we_wordc; i++)
139         printf("%s\en", w[i]);
140     wordfree(&p);
141     exit(EXIT_SUCCESS);
142 }
143 .fi
144 .SH 関連項目
145 \fBfnmatch\fP(3), \fBglob\fP(3)
146 .SH この文書について
147 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
148 である。プロジェクトの説明とバグ報告に関する情報は
149 http://www.kernel.org/doc/man\-pages/ に書かれている。