CURL 데이터에 "cat 파일" 삽입

CURL 데이터에 "cat 파일" 삽입

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 키에 모든 내용을 입력하려면 편집 중인 파일에 따옴표가 여러 개 포함될 수 있으므로 인용에 주의해야 합니다.

관련 정보