当我给出这样的值时,它会起作用:
curl --silent \ --insecure \ -X POST \ -d '{"Name" : "Vikram"}' \ -H "Content-Type: application/json" \ $restUrl
Run Code Online (Sandbox Code Playgroud)
但是当我这样给它时:
post="'{\"Name\" : \"Vikram\"}'"
echo $post // Prints '{"Name" : "Vikram"}'
echo ${post} // Prints '{"Name" : "Vikram"}'
Run Code Online (Sandbox Code Playgroud)
但以下不起作用并引发 400 错误:
curl --silent \ --insecure \ -X POST \ -d ${post} \ -H "Content-Type: application/json" \ $restUrl
Run Code Online (Sandbox Code Playgroud)
似乎有多个问题。
1)为了解决您的标题提出的问题,当您使用 $post 作为参数时,其值中的空格会导致 Bash 将其视为多个参数。尝试在它周围加上引号,以便将其视为一个参数。
2)我猜你在 $post 中添加了单引号,试图让 Bash 将其视为单个参数。尝试删除单引号。
3)至少对我来说,curl命令中的所有反斜杠都导致它失败。也许你把它分成多行,复制/粘贴没有翻译。我在下面的示例中删除了它们。
放在一起:
post="{\"Name\" : \"Vikram\"}"
curl --silent --insecure -X POST -d "${post}" -H "Content-Type: application/json" $restUrl
Run Code Online (Sandbox Code Playgroud)