cat explorer/connection-profile/test-network.json | jq ".organizations.Org1MSP.adminPrivateKey.path |= 44ab"
jq: error: syntax error, unexpected IDENT, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.organizations.Org1MSP.adminPrivateKey.path|=44ab
jq: 1 compile error
但是用
也可以cat explorer/connection-profile/test-network.json | jq ".organizations.Org1MSP.adminPrivateKey.path |= 44"
为什么?
实际上我想用
cat explorer/connection-profile/test-network.json | jq ".organizations.Org1MSP.adminPrivateKey.path |= ${PRIV_KEY}"
其中${PRIV_KEY}是44ab…_sk
您可以将字符串分配给可以在jq
过滤器中使用的变量:
PRIV_KEY="44ab..._sk"
jq --arg path "$PRIV_KEY" '.organizations.Org1MSP.adminPrivateKey.path |= $path' explorer/connection-profile/test-network.json
这种方法比直接在过滤器字符串中嵌入一个扩展的shell变量更安全,因为jq
将正确处理任意值,而不是像引号(或它们的缺失)这样的东西。
注意jq
将文件名作为过滤器表达式后的参数;这里不需要cat
(当然,除非它代表curl
或其他东西,并且您不使用现有文件)
你试过了吗?我通过设置表达式和<"之间的值来修复同样的错误
cat explorer/connection-profile/test-network.json | jq '.organizations.Org1MSP.adminPrivateKey.path |= "44ab"'