包含空格的参数将无法正确传递给curl命令。 在--data字段中引号未正确传递。
如果我只是回显在curl命令中使用的变量'curlData',我将获得应有的一切;例如:
$echo $curlData
'{"name":"jason","description","service"}'
我不明白为什么curl不会像预期的那样消耗'curlData'变量:
curl --data '{"name":"jason","description","service"}'
这是我的代码示例:
read -p "Name : " repoName
read -p "Description []: " repoDescription
curlData="'"{'"'name'"':'"'$repoName'"','"'descripton'"':'"'$repoDescription'"'}"'"
curl --data $curlData $apiURL
错误:
curl: (3) [globbing] unmatched close brace/bracket in column 26
谢谢您的帮助,我觉得我现在正在接受报价。
答案 0 :(得分:2)
curlData
是带有正确转义的特殊字符等的有效JSON值,请使用jq来生成它。curlData="$(jq --arg name "$repoName" --arg desc "$repoDescription" -nc '{name:$name,description:$desc}')"
curl --data "$curlData" "$apiURL"
答案 1 :(得分:0)
如果您有权使用任何形式的软件包管理,我强烈建议jo
。
curlData=$(jo name="$repoName" description="$repoDescription")
curl -d "$curlData" "$apiURL"