컬 명령에 개행 문자 "\n"을 전달하는 중에 문제가 발생했습니다.

컬 명령에 개행 문자 "\n"을 전달하는 중에 문제가 발생했습니다.

내 Jenkins 여러 줄 매개 변수는 다음과 같이 SERVER_IP Unix 명령에 전달되는 변수에서 읽혀집니다 .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 변수 변경을 제어할 수 없습니다.

오류를 방지하기 위해 컬 명령이 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표준 입력에서 명령줄을 작성하고 실행할 사람에게 전달됩니다.

예를 들어, 다음은 "two" 디렉터리 내에 중첩된 "one"이라는 디렉터리를 생성합니다.

echo 'one/two' | xargs mkdir -p->와 동일mkdir -p one/two

이것이 분명하기를 바랍니다. 도움이 되셨다니 다행입니다.

관련 정보