如何在bash脚本中的curl中将多行json字符串作为正文发布

use*_*612 11 bash json curl

我有以下bash脚本

#!/bin/bash

body=$(cat  << EOF
{
    "CreatedBy":  "$(hostname -f)",
    "Id":  "$(uuidgen)",
    "Type":  "TestAlertType",
    "AlertCategory":  "NonUrgent"
    }
EOF
)


curl -H "Content-Type: application/json" -X POST -d $body https://dev.cloudapp.net/v1/
Run Code Online (Sandbox Code Playgroud)

但我在帖子上得到了无效的json错误.我错过了什么?

use*_*612 15

这很有效

curl -H "Content-Type: application/json" -X POST -d "$body" https://dev.cloudapp.net/v1/
Run Code Online (Sandbox Code Playgroud)

  • 如果`$body`的内容有/需要换行/回车(例如`\n`),那么您需要在使用`cat`和`创建`$body`之前添加`IFS=$"\n"` EOF` 否则,当稍后使用 `$body` 时,新行会消失,无论您是否使用像 `"$body"` 这样的双引号。 (2认同)