^ $ 1 $在bash中是什么意思,为什么它在zsh中不起作用

时间:2018-01-11 09:16:37

标签: bash grep zsh

我最近从bash移到zsh,我很久以前发现的一个小脚本停止了工作。

该脚本显示了哪些包依赖于指定的包。

comm -12 <(pactree -ru $1 | sort) <(pacman -Qqe | sort) | grep -v ^$1$ | sed 's/^/  /'

经过一段时间的捣乱,我发现它在grep -v ^$1$时断了。那时候,当我找到脚本时,我试着谷歌搜索它的意思但是没有成功。现在它已经破裂了,我对它的作用以及它的确切运作方式更感兴趣。

所以,问题是,^$1$是什么意思以及如何让它在zsh中发挥作用?谢谢!

编辑: 好的,^$是正则表达式,我明白了。 RE是我总是放下的话题,因为它需要大量的空闲时间和学习意愿。问题是,为什么它在zsh中不起作用,因为它是grep功能,而shell不应该与它互动。

Screenshot

1 个答案:

答案 0 :(得分:0)

我通过在^$1$周围添加一对双引号来修复它。由于某种原因,bash完全没有引号,但zsh根本不喜欢它。修复实际上比我预期的要容易得多,但这只是因为我不知道那是一个正则表达式(谢谢@DevSolar)。

如果有人想让pacman的最终脚本检查哪些包依赖于特定的包,那么它就是

comm -12 <(pactree -ru $1 | sort) <(pacman -Qqe | sort) | grep -v "^$1$" | sed 's/^/  /'

}

在函数或shell脚本中使用它。

编辑:我在@DevSolar建议之前想出了自己的问题,但我仍然非常感谢你的帮助:)