将换行符“\n”传递给curl命令时出现问题

将换行符“\n”传递给curl命令时出现问题

我的 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

希望这是清楚的。很高兴它能帮助你。

相关内容