json - 如何使用 Bash 在单引号内回显变量?

标签 json bash shell curl

用户。我想使用 bash 脚本运行 curl 命令。 (以下命令在终端中完美运行)

curl -i -H "Content-Type: application/json" -X POST -d '{"mountpoint":"/gua-la-autentica-1426251559"}' http://127.0.0.1:5000/connect

但无法在 bash 中运行此命令。当挂载点值在变量($final)中给出时。

final="/gua-la-autentica-1426251559"
curl -i -H "Content-Type: application/json" -X POST -d '{"mountpoint":'$final'}' http://127.0.0.1:5000/connect

谁能帮我,如何在单引号内回显变量?

最佳答案

JSON 字符串值应该被引用,参数扩展也应该被引用。您可以通过在整个 JSON 字符串周围使用双引号并转义内部双引号来实现此目的,如下所示:

curl -i -H "Content-Type: application/json" -X POST -d "{\"mountpoint\":\"$final\"}" http://127.0.0.1:5000/connect

如评论中所述,更可靠的方法是使用诸如 jq 之类的工具来生成 JSON:

json=$(jq -n --arg final "$final" '{ mountpoint: $final }')
curl -i -H "Content-Type: application/json" -X POST -d "$json" http://127.0.0.1:5000/connect

关于json - 如何使用 Bash 在单引号内回显变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29351101/

相关文章:

bash - 使用 shell 脚本解析 consul 模板文件中的行

linux - UNIX 中的可选命令

c# - 我在这里制造泄漏吗?

bash - 如何在 crontab 中委托(delegate)使用另一个文件作为 crontab?在 SVN/CVS 中又名 Crontab?

html - 如何在 bash 中从 HTML 文档中提取特定文本?

linux - Bash - 如何让循环只运行一次?

将命令通过管道传递到 shell 后,C 无限循环

c# - 从 Json 字典序列化 C# 字典

java - 颠簸条件规范

javascript - jQuery $.getJSON 对每个控件只工作一次。不再到达服务器