用户。我想使用 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/