Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Docker inspect:使用jq选择具有正斜杠的字段_Bash_Docker_Jq - Fatal编程技术网

Bash Docker inspect:使用jq选择具有正斜杠的字段

Bash Docker inspect:使用jq选择具有正斜杠的字段,bash,docker,jq,Bash,Docker,Jq,我怎么才能得到HostPort值?我尝试了以下方法,但失败了 # docker inspect blah | jq '.[] | .NetworkSettings.Ports' { "22/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "32776" } ] } 为什么不: # docker inspect blah | jq '.[] | .NetworkSettings.Ports.22

我怎么才能得到
HostPort
值?我尝试了以下方法,但失败了

# docker inspect blah | jq '.[] | .NetworkSettings.Ports'
{
    "22/tcp": [
     {
       "HostIp": "0.0.0.0",
       "HostPort": "32776"
     }
    ]
}
为什么不:

# docker inspect blah | jq '.[] | .NetworkSettings.Ports.22\/tcp.HostPort'

这将消除对其他工具的需求。

jq
支持对具有特殊字符的键使用双引号:

docker inspect  --format '{{ (index (index .NetworkSettings.Ports "22/tcp") 0).HostPort }}' blah
编辑:中提到了这一点,其中还提到,如果需要,可以添加括号以帮助提高可读性:

jq '."22/tcp".HostPort'

上面的答案很接近,但需要添加一个括号才能正常工作

jq.“22/tcp”[.HostPort'

jq '.["22/tcp"].HostPort'