Curl將換行符
將換行符 n
字元傳遞給 curl 命令的問題
SERVER_IP
我的 Jenkins 多行參數在傳遞給 Unixcurl
命令的變數中讀取,如下所示:curl 命令觸發網頁(Jenkins Build)並將參數傳遞給網頁。
curl -k -X POST 'https://user1:118f32aa48601c10e107f5@portal.myshopb.com: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 命令時出現以下錯誤:
curl: (3) URL中發現非法字元
很遺憾; 我無法控制更改 SERVER_IP 變數。
如何讓我的 curl 命令傳遞 SERVER_IP 值以避免錯誤。
echo 'https://user1:118f32aa48601c10e107f5@portal.myshopb.com: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
希望這很清楚。很高興它幫助了你。