使用set -x
时遇到问题。
#!/bin/sh
#set -x
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))
echo OP_C = "${CHAR_SET}"
echo OP_A = "${ADDITIONAL_FLAGS}"
结果:
使用set -x
./a.sh -a additional -c character
OP_C = 'character'
OP_A = 'additional'
评论set -x
./a.sh -a additional -c character
OP_C = character
OP_A = additional
问题:
启用set -x
后,为什么单引号会包含在结果中?
答案 0 :(得分:0)
无法重现。这是我从启用了set -x
的/ bin / sh获得的输出:
+ getopts c:a: optionalargs
+ case $optionalargs in
+ aopt=additional
+ getopts c:a: optionalargs
+ case $optionalargs in
+ copt=character
+ getopts c:a: optionalargs
+ '[' '!' -z character ']'
+ export CHAR_SET=character
+ CHAR_SET=character
+ '[' '!' -z additional ']'
+ export ADDITIONAL_FLAGS=additional
+ ADDITIONAL_FLAGS=additional
+ shift 4
+ echo OP_C = character
OP_C = character
+ echo OP_A = additional
OP_A = additional
我也尝试使用破折号和 ash ,结果相同。