[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:75048] getopt(1)のinvalid option検出


さくです。

シェルスクリプトでコマンドラインからオプションを与えたいとき、

set -- `getopt abc $*`

などとしますが、これに不適切なもの(上だと -d とか)がまじっていることはどう
やったら検出できるでしょうか?

そんなの $? を見れば簡単だ、と思っていたのですが、

$ cat test.sh
#!/bin/sh

set -- `getopt abc $*`
echo $?

$ ./test.sh -d
getopt: invalid option -- d
0

となります。

getopt(util-linux中のもの)自体はエラー時に $? に 1 を設定しているのですが、
setの次の行で $? を調べても、既にsetコマンドのステータス値(どうやら常に成
功:0)が入ってしまっているようです。

どうするのがよいでしょうか?

-- 
OZAWA -Crouton- Sakuro
E-Mail: mailto:crouton _at_ weatherlight.org
   Web: http://www.weatherlight.org/~crouton/
   PGP: C98F 74E0 AEEB 4578 1DFC  F650 3BE0 9627 11FC C9F5
VERBA VOLANT, SCRIPTA MANENT

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: