我对jq相当陌生,我正在使用本教程将新的组织添加到超级账本结构网络。
整个教程中都广泛使用jq,尤其是修改json文件。
本教程使用组织名称示例,但我正在尝试使组织名称动态化。一切正常,除非我尝试将变量传递给jq。
这里是jq命令及其输出。
jq版本:1.5.1
$ export MSPID = Org4MSP$ echo $ MSPIDOrg4MSP
尝试使用环境传递变量。
关键字:env.MSPID
$ jq -s'。[0] * {“ channel_group”:{“ groups”:{“ Application”:{“ groups”:{“ env.MSPID”:。[1]}}}}}'config.json org4.json
输出代码段:它不打印Org4MSP,而是打印文字字符串env.MSPID
"env.MSPID": {
"groups": {},
"mod_policy": "Admins",
"policies": {
"Admins": {
"mod_policy": "Admins",
"policy": {
"type": 1,
"value": {
"identities": [
{
尝试使用--arg选项传递变量
关键字:“ $ MSP”
jq --arg MSP“ $ MSPID” -s'。[0] * {“ channel_group”:{“ groups”:{“ Application”:{“ groups:{” $ MSP“:。[1]}}}}}'config.json org4.json
输出代码段:而不是输出Org4MSP,而是输出文字字符串$ MSP
"$MSP": {
"groups": {},
"mod_policy": "Admins",
"policies": {
"Admins": {
"mod_policy": "Admins",
"policy": {
"type": 1,
"value": {
"identities": [
{
[尝试使用--arg选项而不使用双引号来传递变量:
关键字:$ MSP
$ jq --arg MSP“ $ MSPID” -s'。[0] * {“ channel_group”:{“ groups”:{“ Application”:{“ groups:{$ MSP:。[1]}}}}}'config.json org4.json
jq:错误:语法错误,意外的':',在第1行出现'}'(Unix shell引用问题?)]
。[0] * {“ channel_group”:{“ groups”:{“ Application”:{“ groups:{$ MSP:。[1]}}}}}]
jq:1编译错误
尝试使用env传递变量。且不带双引号:
关键字:env.MSPID
$ jq -s'。[0] * {“ channel_group”:{“ groups”:{“ Application”:{“ groups”:{env.MSPID:。[1]}}}}}'config.json org4.json
jq:错误:语法错误,意外的FIELD,在行1处期望'}'(Unix shell引用问题?)>
。[0] * {“ channel_group”:{“ groups”:{“ Application”:{“ groups”:{env.MSPID:。[1]}}}}}]
jq:1编译错误
我很抱歉,如果这似乎是一个琐碎的问题,但是我在网上和docs中进行了搜索,但不明白为什么JSON键不会转换为shell变量的值。
谢谢
我对jq相当陌生,我正在使用本教程将新的组织添加到超级账本结构网络。在整个教程中,jq的使用广泛,尤其是修改json文件。 ...
在您的子表达式中: