使用引用变量调用脚本中的脚本时遇到问题。
#!/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
问题:
为什么双引号会失败我的脚本?难道它不能阻止全球化吗?
答案 0 :(得分:0)
在内部调用的脚本中发现了问题。它处理双引号参数并替换为单引号。所以,这确实不是问题。