我有一份 Jenkins 工作,作为参数化构建触发。它接受一个可选的字符串参数 (HOSTNAMES),该参数可以是逗号分隔的主机名列表。
我需要将此逗号分隔的主机名列表作为命令行参数传递给 PERL 脚本(在执行 shell 构建步骤中)。
以下是我在执行 shell 构建步骤中处理输入参数和构造命令行参数的方式:
cmd_options=''
echo hostnames is $HOSTNAMES
if [ "$HOSTNAMES" != "" ]
then
cmd_options+=" --hostnames \"$HOSTNAMES\""
fi
perl myscript.pl $cmd_options
不过,在构建的控制台输出中,我看到参数传递不正确。这是控制台输出:
+ cmd_options=
+ echo hostnames is host1, host2
hostnames is host1, host2
+ '[' 'host1, host2' '!=' '' ']'
+ cmd_options+=' --hostnames "host1, host2"'
+ perl myscript.pl --hostnames '"host1,' 'host2"'
我想myscript.pl
被这样称呼:
perl myscript.pl --hostnames "host1, host2"
我尝试了各种$cmd_options
使用单引号和双引号进行操作的方法,但到目前为止都没有成功。任何关于我哪里出错的指示?