使用Shell脚本将JSON文件发布到URL

sat*_*h v 1 bash shell json curl

我正在编写一个shell脚本来将JSON文件发布到URL.

标题是:

Content-Type: application/json
Accept: application/json
Account-Number: xxxxxxxx
Authorization: Basic eW91cl91c2VyX25hbWU6cGFzc3dvcmQ=
Run Code Online (Sandbox Code Playgroud)

上面的JSON字符串保存在.JSON文件中,我的curl命令应该处理它并获得所需的响应.我使用以下命令但它没有成功处理:

curl -H "Content-Type: application/json" -X POST -d "data=@$f" https://abcdef.com/test/example/v1/
Run Code Online (Sandbox Code Playgroud)

$ f具有JSON文件名.

我也有以下问题:

  1. 我的标题和JSON字符串应该在同一个JSON文件中吗?如果标题存在于不同的文件中,那么它的扩展名应该是什么?以及如何使用curl命令处理它?
  2. 我应该为{,",等等特殊字符做些具体处理吗?

gle*_*man 5

你没有发送所有标题.我不相信有一个选项可以从文件中读取所需的标题.

由于您使用bash编写脚本,因此我将所有选项存储在shell数组中以提高可读性:

curl_opts=(
    -H "Content-Type: application/json"
    -H "Accept: application/json"
    -H "Account-Number: xxxxxxxx"
    -H "Authorization: Basic eW91cl91c2VyX25hbWU6cGFzc3dvcmQ="
    -X POST 
    --data-binary "@$f"
)
curl "${curl_opts[@]}" https://abcdef.com/test/example/v1/
Run Code Online (Sandbox Code Playgroud)