我的 Jenkins 多行参数在变量中读取,SERVER_IP
该变量传递给 Unixcurl
命令,如下所示:
curl命令触发一个网页(Jenkins Build)并将参数传递给网页。
curl -k -X POST 'https://user1:[email protected]:9043/job/Scanner/buildWithParameters?SERVER_IP=192.118.89.106\n10.9.20.13\n10.0.23.121&USER=root&REPORT_NAME=ihs_run' -H "Jenkins-Crumb:8c6f641ab7b9d1e7839c17a2be844490f2c88c5f9ae90c5ae5d52d7eae1"
执行curl命令时出现以下错误:
卷曲:(3)URL中发现非法字符
不幸的是,我无法控制改变 SERVER_IP 变量。
如何让我的curl 命令传递SERVER_IP 值以避免错误。
答案1
echo 'https://user1:[email protected]:9043/job/Scanner/buildWithParameters?SERVER_IP='${SERVER_IP}'&USER=root&REPORT_NAME=ihs_run' -H "Jenkins-Crumb:8c6f641ab7b9d1e7839c17a2be844490f2c88c5f9ae90c5ae5d52d7eae1" | sed ':a;N;$!ba;s/\n/\\n/g' | xargs curl -k -X POST
这关联对该示例中使用的 sed 命令提供了很好的解释。我只是添加了\\n
与我认为您想要的结果保持一致的内容。然后,经过净化的 URL 版本将通过管道传送给xargs
将从标准输入构建和执行命令行的人员。
作为示例,以下内容将创建一个名为“一”的目录,嵌套目录“二”。
echo 'one/two' | xargs mkdir -p
与->相同mkdir -p one/two
希望这是清楚的。很高兴它能帮助你。