代码之家  ›  专栏  ›  技术社区  ›  Jitesh Sojitra

使用bash从JSON文件动态获取值

  •  0
  • Jitesh Sojitra  · 技术社区  · 6 年前

    我有下面的json文件,根据产品,我想用bash获得URL的值。

    我可以使用if-else循环编写代码,但这并不有效,因为每当文件更改时,我都必须更新代码。使用bash动态获取值有什么简单的方法吗?例如,${PRODUCT}.${URL}值。

    if [ "${PRODUCT}" = "PRODUCT1" ]; then
       URL="https://product1.url:6080"
    elif [ "${PRODUCT}" = "PRODUCT2" ]; then
       URL="https://testing.url.test:8090"
    elif [ "${PRODUCT}" = "PRODUCT3" ]; then
       URL="https://start.url:18080"
    fi
    

    文件内容:

    {
        "DEVICE"     : "DESKTOP",
        "ACCOUNT"    : "test123",
    
        "PRODUCT1": {
            "URL"    : "https://product1.url:6080"
        },
    
        "PRODUCT2": {
            "URL"    : "https://testing.url.test:8090"
        },
    
        "PRODUCT3": {
            "URL"    : "https://start.url:18080"
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Oliver Gaida    6 年前

    jq是一个选择:

    $ echo $PRODUCT
    PRODUCT3
    $ cat json
    {
        "DEVICE"     : "DESKTOP",
        "ACCOUNT"    : "test123",
    
        "PRODUCT1": {
            "URL"    : "https://product1.url:6080"
        },
    
        "PRODUCT2": {
            "URL"    : "https://testing.url.test:8090"
        },
    
        "PRODUCT3": {
            "URL"    : "https://start.url:18080"
        }
    }
    $ jq -r --arg p $PRODUCT '.[$p].URL' json
    https://start.url:18080