2011-12-19 14 views
2

私はパラメータを受け入れるbashスクリプトを書いています。私はそれを達成するためにgetoptsを使用しています。getopts not working - bash

#!/bin/bash 

while getopts ":a" opt; do 
    case $opt in 
    a) 
     echo "-a was triggered!" >&2 
     ;; 
    \?) 
     echo "Invalid option: -$OPTARG" >&2 
     ;; 
    esac 
done 

しかし、以上のコードは私にこのエラーを返します。

'etOpts_test.sh: line 4: syntax error near unexpected token `in 
'etOpts_test.sh: line 4: ` case $opt in 

私はあなたがおそらくcase "$opt" in(引用$optを)したいライン4で

答えて

1

のCentOS 5.5を使用しています。それ以外の場合は、メタキャラクタが含まれていると失敗する可能性があります。ない、:

+0

私はスクリプト本体を清掃し、それが機能するようになりました。 – pahan

3

それはなければならないは引数を必要とするフラグを示すために、また、それがワイルドカード記号として機能するようにマークが引用されるべきではない疑問。全体のコードは(もは引数を取らない-hフラグを実証する)のようになります。

function usage { 
    echo "usage: ..." 
} 

a_arg= 
while getopts a:h opt; do 
    case $opt in 
    a) 
     a_arg=$OPTARG 
     ;; 
    h) 
     usage && exit 0 
     ;; 
    ?) 
     usage && exit 2 
     ;; 
    esac 
done 
+0

私はあなたが正しいと信じています。しかし:働いた私はなぜ知りません。私はスクリプト本体をきれいにしました。 – pahan

+0

pahan - $ OPTARGにも ":a"が正しく入力されていますか? – bobah