使用cygwin 32bit,预计v5.45(看起来是最新的cygwin自带的)。无法接受预期的多个命令行参数到一个变量
COMMAND="$WIN_BUILD_ROOT\\scripts\\signBinaries.bat $BUS $NET_DRIVE $WIN_SIGNING_ROOT"
$CLIENT_BUILD_ROOT/scripts/runCommand.sh $arg1 $arg2 $arg3 $arg4 $COMMAND
runCommand.sh:
#!C:\cygwin\bin\expect.exe -f
set timeout 9
set arg1 [lindex $argv 0]
set arg2 [lindex $argv 1]
set arg3 [lindex $argv 2]
set arg4 [lindex $argv 3]
set COMMAND [lrange $argv 4 end]
send -- "$COMMAND\r"
给我:
{s:\git\builds\scripts\signBinaries.bat} 64 s {s:\git\builds\}
The filename, directory name, or volume label syntax is incorrect.
的情况是,前四个参数是固定的。然后可能会有不同数量的命令,这些命令我希望作为一个命令被预期执行。如果我只使用[lindex argv 4]
,我只能得到signBinaries
脚本名称,不管它是否用引号引起来。如图所示,使用lrange
(通过googling发现),它将大括号内的字符串参数括起来。为什么它会以这种方式修改我的参数,以及如何修复它,以便$COMMAND
包含我所期望的命令?