我有一个主要的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"
$data
变量将被构建,其中包含键的随机值,如下所示:{ "age":"59", "firstName":"Lauree", "lastName":"Inna", "role":"Mage" }
我已经尝试过以下问题的答案:Curl command doesn't work in bash script,但对我没有用。
bash脚本的源代码可以在https://github.com/JeanCHilger/automated-requester/blob/master/post/POST.sh(出现错误的第70行)找到
答案 0 :(得分:1)
变量中不应包含\'
。这样会将单引号放入该参数中。
使用双引号使变量作为单个参数扩展。
curl -X POST "$URL" -H "$HEADERS" -d "$data"