当我使用命令时:
jq -r '.balances[] | select(.asset=="BTC").free' wallet.json
结果:“4723846.89208129”
当我使用命令时:
coin2=BTC
jq -r '.balances[] | select(.asset=="$coin2").free' wallet.json
结果:无
如何修复此错误?请帮帮我!
wallet.json 在这里:
{
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}
答案1
第一的,首先将该变量值传递给
jq
with--arg coin2 "$coin2"
,如下所示:jq -r --arg coin2 "$coin2" '.balances[] | select(.asset==$coin2).free' wallet.json
第二,不要在命令字符串
$coin2
中引用传递的变量,否则它将被逐字读取为固定字符串,而不是扩展为其值。jq
' ... '
从man jq
:
--参数名称值:
此选项将值作为预定义变量传递给 jq 程序。如果您使用 --arg foo bar 运行 jq,则 $foo 在程序中可用并且具有值“bar”。请注意,该值将被视为字符串,因此 --arg foo 123 会将 $foo 绑定到“123”。