我有file.json
以下结构:
{
"connections": {}
}
我想用变量$1
和更新连接对象$2
。我正在努力:
jq --arg ssid "$1" --arg pass "$2" '.connections.$ssid = "$pass"' file.json > tmp.json && mv tmp.json file.json
但我要回来了jq: error: syntax error, unexpected '$', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.connections.$ssid = "$pass"
我期望script.sh value key
生产:
{
"connections": {key:"value"}
}
如何使用多个参数更新对象
您必须使用
[]
索引来使用变量(或任何非文字)作为键:这里以 的值作为键
[$ssid]
索引。错误出现在“ ”处,这是一个语法错误,而不是与多个变量有关。.connections
$ssid
.$
变量不会像在 shell 脚本中那样直接替换为字符串,而是必须在表达式上下文中使用的实际命名词法绑定。索引可能是一个更复杂的表达式:
.connections[$ssid + "X"] = $pass
首先将 X 放在末尾并将其用作键。