我对使用getopt的Cygwin脚本有疑问。我能够使用以下代码片段重现该问题。
基本上我想使用getopt处理一些命令行参数。我的命令行参数中包含空格字符(空格和制表符 - 确切地说是Windows文件名)。我能够正确读取脚本中的所有命令行参数(包括空白字符),但是当我使用getopt并逐个遍历所有参数时,Cygwin错误地将每个空格视为参数分隔符。
指针赞赏。注意: - 我使用过引号,我认为合适,但这对我的原因没有帮助。
# Command line arguments passed are as follows:
# »script« -a "/A/B/C Directory/1.txt" -b "/A/B/D Directory/2.txt" -c "/A/B/E Directory/3.txt"
echo "Argument-1: " $1
echo "Argument-2: " $2
echo "Argument-3: " $3
echo "Argument-4: " $4
echo "Argument-5: " $5
echo "Argument-6: " $6
#
# So far no problems
#
echo
echo
set -- `getopt a:b:c: "$*"`
counter=1
while [ "$1" != "--" ]
do
echo "getopt-$counter: " $1
counter=$[$counter + 1]
shift 1
done
#
# Now there's a problem. The six command line arguments (three with blank spaces) are incorrectly
# interpreted as nine command line arguments
#