无法在命令行上使用jq使用/传递shell变量

问题描述 投票:0回答:1

我对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文件。 ...

environment-variables key command-line-arguments jq
1个回答
0
投票

环境变量

在您的子表达式中:

© www.soinside.com 2019 - 2024. All rights reserved.