CURL GET 요청에 Unix Shell 변수를 추가하는 가장 좋은 방법

CURL GET 요청에 Unix Shell 변수를 추가하는 가장 좋은 방법

curl –X GET다음 링크와 함께 명령을 사용한다고 가정해 보겠습니다 .

“$WEBSITE_URL/ACTION_NAME/ACTION1;id=$ID?Command=TEST&id1=$ID1&id2=$ID2&id3=$ID3”

보시다시피 문자열에 $변수가 몇 개 있습니다. 분명히 Bash에게 이러한 변수의 시작과 끝을 알리지 않고 문자열에 추가하는 것만으로는 작동하지 않습니다.

그래서 제가 찾은 다양한 태그(예: "$Variable", ${Variable} 등)를 사용하여 변수를 분리하고 문자열이 일반 요청처럼 보이고 동작하도록 만들려고 했지만 아무 것도 작동하지 않았습니다. 여기에는 도움이 되는 몇 가지 관련 주제가 있지만 이를 작동시키는 데 필요한 정보가 아직 없습니다. 아마도 내 사례가 기본 예와 약간 다르고 여기에 뭔가가 빠졌기 때문일 것입니다. 어떤 아이디어가 있나요? 건배!

답변1

구체적 으로 특수 문자를 올바르게 이스케이프 처리하지 않은 것 같습니다 ;.&?

또한 사이트의 기능일 수도 있지만 큰따옴표는 원하는 것과 다릅니다 ."

나는 다음을 사용할 것이다:

# curl "${WEBSITE_URL}/${ACTION_NAME}/${ACTION1}\;id=${ID}\?Command=TEST\&id1=${ID1}\&id2=${ID2}\&id3=${ID3}"

답변2

bash이름은 변수 이름에 유효한 모든 문자를 사용하여 결정됩니다 $. 즉, 첫 번째 잘못된 문자는 이름 문자열을 제한합니다.

의심스러울 때 ${Variable}사용하십시오 . 이미 이것을 언급했으므로 문제는 다를 것입니다.

답변3

문자열을 변수로 생성하고 해당 변수를 컬에 전달합니다.

string="${WEBSITE_URL}/ACTION_NAME/ACTION1;id=${ID}?Command=TEST&id1=${ID1}&id2=${ID2}&id3=${ID3}"
echo $string #this should get the right string to be passed to curl
curl -X GET $string

관련 정보