Curl

將換行符 n 字元傳遞給 curl 命令的問題

  • September 20, 2020

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

希望這很清楚。很高興它幫助了你。

引用自:https://unix.stackexchange.com/questions/610091