bash文件中的curl命令不起作用

时间:2019-01-17 01:47:10

标签: bash curl

我有一个主要的bash脚本,我想使用它来使用curl发出HTTP请求。

执行curl命令的行如下:

echo $(curl -X POST $URL -H \'$HEADERS\' -d \'$data\')

此行运行时出现错误:

"status":415, "error":"Unsupported Media Type", "message":"Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported",

但是,如果我在没有$()运算符的情况下执行同一行,则如下所示:

echo curl -X POST $URL -H \'$HEADERS\' -d \'$data\'

我将得到类似这样的输出:

curl -X POST localhost:8080/employees -H 'Content-type:application/json' -d '{ "age":"25", "firstName":"Peggy", "lastName":"Ailbert", "role":"Thief" }'

如果复制到终端,则可以完美运行。

我想知道代码出了什么问题。

注释:

  • 变量$URL$HEADERS来自.conf,并具有恒定值:
URL="localhost:8080/employees"
HEADERS="Content-type:application/json"
  • 当主bash运行一次key时,$data变量将被构建,其中包含键的随机值,如下所示:
{ "age":"59", "firstName":"Lauree", "lastName":"Inna", "role":"Mage" }

1 个答案:

答案 0 :(得分:1)

变量中不应包含\'。这样会将单引号放入该参数中。

使用双引号使变量作为单个参数扩展。

curl -X POST "$URL" -H "$HEADERS" -d "$data"