a의 내용을 캡처하여 컬 쿼리에서 필드의 일부로 file.txt
사용하고 싶습니다.--data
나는 시도했다:
curl ... --data '{ "file_content":[" $(cat file.txt) ", ...]}"' ...
$(cat file.txt)
그러나 이는 문자열 을 보내기 전에 해석하는 대신 서버에 문자열을 전달합니다 .
나는 또한 다음을 시도했습니다.
curl ... --data '{ "file_content":[" `cat file.txt` ", ...]}"' ...
마찬가지로 문자열을 해석하는 대신 있는 그대로 전달합니다.
답변1
방정식에서 셸을 제거할 수 있다면 아마도 3개의 백슬래시가 필요하지 않을 것입니다. 다행히도 다음을 수행할 수 있습니다.
{ printf '{ "file_content":["'
cat file.txt
printf '", ...]}"'
}| curl ... --data-binary @-
보다 man curl
. 차이점에 주의를 기울이는 것이 좋습니다.--data-ascii
(그게 -d
내 말이에요), --data-binary
, 그리고 --data-urlencoded
.
답변2
curl -d "$(cat /path/to/my/file.txt)" -X POST http://<your_base_URL>/api/v1/endpoint
이것을 테스트했는데 작동합니다. file_content 키에 모든 내용을 입력하려면 편집 중인 파일에 따옴표가 여러 개 포함될 수 있으므로 인용에 주의해야 합니다.