我有一個Jenkins作業,作爲參數化構建觸發。它接受一個可選的String參數(HOSTNAMES),它可以是逗號分隔的主機名列表。用於爲PERL腳本構建CLI參數的Shell腳本
我需要將此逗號分隔的主機名列表作爲命令行參數傳遞給PERL腳本(在Execute 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
的各種方式,但並不成功,到目前爲止在正確的情況下。任何指向我出錯的地方?
爲什麼不重寫Perl腳本呢? – reinierpost
我可以做到這一點。但是我更多地提出了這個問題,試圖理解shell腳本的更多細節以及我錯過了什麼。 –
你在用什麼外殼? –