1

これは私のシェルスクリプトです-

if ! options=$(getopt -o : -l along:,blong:,clong: -- "$@")
then
    # something went wrong, getopt will put out an error message for us
    exit 1
fi

set -- $options

while [ $# -gt 0 ]
do
    case $1 in
        --along) echo "--along selected :: $2" ;;
        --blong) echo "--blong selected :: $2" ;;
        --clong) echo "--clong selected :: $2" ;;
    esac
    shift
done

スクリプトを実行すると、次の出力が得られます-

./test.sh --along hi --blong hello --clong bye
--along selected :: 'hi'
--blong selected :: 'hello'
--clong selected :: 'bye'

問題は、引数を一重引用符 ('hi'、'hello'、'bye') で表示したくないことです。それらの引用符を取り除くにはどうすればよいですか?

4

1 に答える 1

5

オプションを使用する-u--unquoted、getoptに使用します。

if ! options=$(getopt -u -o : -l along:,blong:,clong: -- "$@")

getoptのマンページには次のように書かれてい-uます。

出力を引用しないでください。空白と特殊な(シェルに依存する)文字は、このモードで大混乱を引き起こす可能性があることに注意してください(他のgetopt(1)実装の場合と同様)。

于 2012-12-07T11:17:31.937 に答える