Cygwin:使用getopt解析空白参数

时间:2018-03-21 19:38:06

标签: cygwin getopt

我对使用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
#

0 个答案:

没有答案