다음 명령을 실행하고 싶습니다.
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진수 문자열과 유사합니다. 원격 끝은 이러한 공간을 좋아하지 않을 수 있습니다.