내부 추가 명령을 사용하여 Curl 명령을 실행하는 방법은 무엇입니까?

내부 추가 명령을 사용하여 Curl 명령을 실행하는 방법은 무엇입니까?

다음 명령을 실행하고 싶습니다.

curl -X PUT $URL -H "accept: */*" -H "Content-Type: application/json" -d '{"payload": $(base64 /some/path)`}'

tcsh가 아닌 이 구문을 사용하는 bash이므로 이 명령을 실행하는 것이 합리적입니다 $(base64 /some/path). Illegal variable name어떻게 실행할 수 있나요? 백틱을 사용해 보았지만 성공하지 못했습니다.

답변1

백틱이 작동해야 합니다. JSON 구문을 올바르게 만들려면 더 많은 큰따옴표 문자가 필요합니다.

curl -X PUT $URL -H "accept: */*" -H "Content-Type: application/json" -d '{"payload": "'`base64 /some/path`'"}'

-d 매개변수는 세 부분으로 구성됩니다.

   '{"payload": "'
   `base64 /some/path`
   '"}'

첫 번째와 세 번째는 작은따옴표를 사용하므로 큰따옴표를 포함하여 그 안의 모든 내용이 유지됩니다. 특히, -d 매개변수의 최종 값은 { "payload": "af5143676d6d6d6a bcdefc8844"}주위에 큰따옴표가 있고 base64 출력에서 ​​개행 문자를 대체하는 공백이 포함된 16진수 문자열과 유사합니다. 원격 끝은 이러한 공간을 좋아하지 않을 수 있습니다.

관련 정보