Double Quoted变量使脚本失败

时间:2017-11-30 17:02:44

标签: shell glob

使用引用变量调用脚本中的脚本时遇到问题。

#!/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

问题:

为什么双引号会失败我的脚本?难道它不能阻止全球化吗?

1 个答案:

答案 0 :(得分:0)

在内部调用的脚本中发现了问题。它处理双引号参数并替换为单引号。所以,这确实不是问题。