在 CURL 数据中嵌入“cat 文件”

在 CURL 数据中嵌入“cat 文件”

我想捕获 a 的内容file.txt并将其用作--data我的curl 查询中字段的一部分。

我试过:

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 键上,则必须小心引用,因为您所编辑的文件中可能包含任意数量的引号。

相关内容