zsh 无法解释管道命令,但 bash 可以执行该命令

zsh 无法解释管道命令,但 bash 可以执行该命令
~ ᐅ docker image inspect nginx | jq .[].Config.ExposedPorts
zsh: no matches found: .[].Config.ExposedPorts

bash按预期工作。

我发现了一个不同之处至于bash和中的管道是如何解释的zsh,但我不能说这是否与我的情况有关。

答案1

通配符还支持类似正则表达式的字符组语法。例如[a-f]匹配ab、... 和f。它只会匹配一个字母。在您的命令中,您指定了一个空组。它永远无法匹配任何内容。

在 Bash 中,如果 glob 模式不匹配任何内容,则会将其按原样传递到命令行。ZSH 不会这样做。相反,它会警告用户。您可以更改此设置:setopt nonomatch

tl;dr: Always quote your arguments if they contain anything but ASCII letters or numbers.

Stack Overflow 上的此问答还有更多细节。

相关内容