私は奇妙な結果を得ている以外は引数の処理を処理するbashの組み込みのgetoptsを使用して私の手を試しています。ここに私のテストスクリプトがあります。Bashのgetopts最後の引数を削除する
#!/bin/sh
HOST=
OWNER=
GROUP=
while getopts "h:o:g" OPTION;
do
case $OPTION in
h)
HOST=$OPTARG
;;
o)
OWNER=$OPTARG
;;
g)
GROUP=$OPTARG
;;
esac
done
echo "$HOST - $OWNER:$GROUP"
ただし、これを使用してスクリプトを実行すると、
./test.sh -h test.host.com -o skittles -g whatever
私の最後の引数は、決して引き込まれたり、落ちたりしません。エコーからの私の結果は次のとおりです。
test.host.com - skittles:
^where's my group value? O.o
これを引き起こす原因は誰にも分かりますか?
ありがとうございました。
ありがとうおおき!私はコロンが各オプションを成功させなければならないことに気づいていませんでした。私がそれを逃した理由は、私が試したこの例のせいだ。 http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/ – Skittles
これは明らかに[bash getopt man page](http://ss64.com/bash)で述べられています。 /getopts.html): "文字の後にコロンが続く場合、そのオプションには引数が必要です。" – Ouki