| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > wwordexp(3C)HP-UX 11i Version 2: September 2004 |
|
名称wordexp(), wordfree() ― 単語の展開 構文#include <wordexp.h> int wordexp(const char *words, wordexp_t *pwordexp, int flags); void wordfree(wordexp_t *pwordexp); 説明wordexp() は、単語を展開し、展開した単語のリストを pwordexp が指す構造体に格納します。 引き数 words は、展開する 1 つまたは複数の単語の入った文字列へのポインターです。 展開結果は、シェル sh-posix(1) を参照) のコマンドラインに、何かのユーティリティへの引き数としてこの文字列を与えた場合と同じです。 よって、 words は、引用符で囲わない限り、ニューライン文字やシェルの特殊文字 |, &, ;, < または > を含んでいてはいけません。 ただし、シェルコマンド置換の場合は例外です。 words が、引用符に囲われていないコメント文字 # を含んでいる場合、 wordexp() はこれをコメントを表すトークンの開始文字として扱い、この文字以降を無視します。 構造体型 wordexp_t は、ヘッダーファイル <wordexp.h> で定義してあり、以下の要素を持ちます。
wordexp() は、展開した単語の数を pwordexp->we_wordc に格納します。 フィールド分離やパス名展開で分けられた各々のフィールドが、それぞれ pwordexp->we_wordv リストの 1 単語となります。 単語の順序は、シェルの単語展開の項で説明されているとおりです。 最後の単語を指すポインターの次のポインターは null ポインターです。 パラメータ (たとえば $$ や $* など) の展開については特に指定はありません。 pwordexp が指す記憶領域は、関数を呼び出す側で割り当ててください。 それ以外については、 pwordexp->we_wordv が指すメモリーも含め、 wordexp() が必要に応じて割り当てます。 wordfree() は、直前の wordexp() で割り当てた pwordexp に対応するメモリーをすべて解放します。 引き数 flags は wordexp() の動作を制御します。 flags の値は、以下の定数を 0 個またはそれ以上、ビット毎の 論理的 OR をとったものです。 これらの定数は、 <wordexp.h> に定義してあります。
WRDE_APPEND フラグを使って、以前に wordexp() で展開した単語の後ろに新しい単語の組を追加することができます。 同じ pwordexp を使って、 wordexp() を 2 回またはそれ以上続けて呼び出し、間に wordfree() を呼び出さなかった場合の規則は次のとおりです。
words 中に、ニューライン, |, &, ;, <, >, 小かっこ、 中かっこの各文字が、引用符に囲われない不適切な構文で現れた場合、 wordexp() は失敗し、展開した単語数は 0 となります。 WRDE_SHOWERR flags を立てない場合、 wordexp() は、 words の展開でコマンド置換を行う場合に起動するユーティリティの stderr を /dev/null にリダイレクトします。 立てた場合は、 words の展開作業中に構文エラーを見つけると stderr メッセージを出力します。 WRDE_DOOFFS を立てる場合、同じ wordexp を使って呼び出す wordexp() と wordfree() について、 pwordexp->we_offs を常に同じ値にします。 戻り値展開が正常に終了した場合 wordexp() は、0 を戻り値とします。それ以外の場合は <wordexp.h> で定義してある 0 以外の値でエラーを表します。
戻り値がエラー WRDE_NOSPACE の場合、 wordexp() は、 pwordexp->we_wordc および pwordexp->we_wordv を、正常に展開した単語について設定します。 それ以外のエラーの場合は、何も変更しません。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||