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