0
引用された変数を使用してスクリプト内のスクリプトを呼び出す際に問題があります。スクリプトで二重引用符で囲まれた変数
#!/bin/sh
while getopts c:a: optionalargs
do
case $optionalargs in
c)copt=$OPTARG;;
a)aopt=$OPTARG;;
*)echo "Invalid arg";;
esac
done
if [ ! -z "$copt" ]
then
export CHAR_SET=$copt
fi
if [ ! -z "$aopt" ]
then
export ADDITIONAL_FLAGS=$aopt
fi
shift $((OPTIND -1))
/var/bin/script1.sh "${CHAR_SET}" "${ADDITIONAL_FLAGS}"
結果:
引用符なし/var/bin/script1.sh ${CHAR_SET} ${ADDITIONAL_FLAGS}
を使用している場合、引用符
./a.sh -a additional -c character
too many arguments . Use -h for help
で/var/bin/script1.sh "${CHAR_SET}" "${ADDITIONAL_FLAGS}"
を使用して
./a.sh -a additional -c character
script runs fine
質問:
なぜ二重引用符がスクリプトに失敗するのですか?グロビングを防ぐべきではないか?
シバンラインを '#!/ bin/sh -x'に変更し、どのデバッグ出力が得られるかを確認してください。 – anubhava
それは私に './a.sh -a 'という追加の' -c '文字を与えました。最小限の例のために2つのパラメータがありますが、実際は7です。 – SriniV
メインスクリプトをDOがうまくいくという議論と、うまくいかない議論もあります。あなたが指定したエラーメッセージを得ることができません。例えば./code.sh -a additional -c "character extra" 'を使用します。がんばろう。 – shellter