繁体   English   中英

jq:在shell脚本中使用 - 字符访问字段

[英]jq: Accessing fields with - character in shell script

我试图从shell脚本使用jq从以下json访问字段“my-tag”:

json文件:

{
    "tag": {
        "value": "hello"
    },
    "my-tag": {
        "value": "hello-my-tag"
    }
}

Shell脚本:

#!/bin/bash
main()
{
    search="my-tag"
    file="myjson.json"
    value=($(jq ".$search.value" "$file"))
    echo $value
}

main "$@"

执行此脚本时,我收到以下错误:

error: tag is not defined
.-tag.value
^^^
1 compile error

如何在shell脚本中正确提取字段?

作为一般经验法则,我强烈建议不要在过滤器中放置shell变量,并使用参数传递它们。

jq --arg search "$search" '.[$search].value' "$file"

您的过滤字符串与脚本等效。 您不希望每次想要更改值时都修改脚本,您可以对其进行参数化。

您必须对任意键字符串使用关联数组表示法

jq ".[\"$search\"].value" "$file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM