将变量作为选项传递给curl在Shell脚本Linux中

时间:2018-10-05 15:06:52

标签: linux bash shell curl

我正在尝试使用curl通过脚本来更新网站的某些信息,但是效果不佳,这是我拥有的代码:

CURL_STD_OPTS="-k --header 'Content-Type: application/json' --header 'Accept: application/json'
curl  "$CURL_STD_OPTS" -X POST --data '{ "actual": '"$BAL"' }' "'$websiteurl'"

这是输出消息:

jdelaoss@infcet99:/tools/saadmin/occtools_morning_checks $ ./test.sh
curl: option -k --header 'Content-Type: application/json' --header 'Accept: application/json': is unknown

如果我直接使用其运行选项从外壳运行脚本。

1 个答案:

答案 0 :(得分:1)

您需要使用数组,而不是常规变量。

curl_std_opts=( -k --header 'Content-Type: application/json' --header 'Accept: application/json')
curl "${curl_std_opts[@]}" -X POST --data "{\"actual\": $BAL}" "$websiteurl"

为了安全起见,您应该使用jq之类的工具来生成JSON,而不要依靠参数插值来生成有效的JSON。

curl "${curl_std_opts[@]}" -X POST --data "(jq --argjson b "$BAL" '{actual: $b}') "$websiteurl"