如何向此 curl 命令添加变量?

Nel*_*aws 8 linux bash curl

我有一个 curl 命令将一串文本发送到服务器,我一直在试图弄清楚如何让文本字符串来自文件或来自 bash 变量。该命令如下所示:

curl -X POST -u "apikey:<apikey>"
--header "Content-Type: application/json"
--data '{"text": "<variable>"}'
"<url>"
Run Code Online (Sandbox Code Playgroud)

我不知道如何在那里获取变量。我试过用 $variable 和 $(< file) 替换,但我不知道如何让它们在没有回声的情况下吐出文本,而且我无法在卷曲中回声。

PSk*_*cik 14

停止单引号字符串,跟随变量扩展,可能是双引号,并恢复单引号字符串:

--data '{"text": "'"$variable"'"}'
Run Code Online (Sandbox Code Playgroud)

$variable仍然应该扩展到与周围环境一起形成合法 JSON 的内容,否则对方可能不会很高兴:)。)

  • 这工作谢谢!事后看来这是有道理的 (3认同)

小智 5

只是在这里再放一个解决方案:

curl -X POST -u "apikey:${apikey}"
--header "Content-Type: application/json"
--data "{\"text\": \"${variable}\"}"
"${url}"
Run Code Online (Sandbox Code Playgroud)

基本上,"是一个引号来处理以下字符串,\"转义引号,并且${varname}是一个变量。


Rog*_*mbe 5

在构建用于 curl 的 JSON 时,我倾向于使用heredocs

curl -s -X POST $URL -d@- <<EOF
[
    {
        "id": 101,
        "text": "$variable"
    }
]
EOF
Run Code Online (Sandbox Code Playgroud)