在ZSH中捕获并测试输出命令
发布时间:2020-12-13 23:05:41 所属栏目:Linux 来源:网络整理
导读:我已经尝试了无数种方法来获得我想要的东西,但似乎没有任何效果.我总是得到像2这样的东西:没找到. 我想捕获命令的输出,然后测试它是否等于“
我已经尝试了无数种方法来获得我想要的东西,但似乎没有任何效果.我总是得到像2这样的东西:没找到.
我想捕获命令的输出,然后测试它是否等于“!”,如下所示: function test() { local testv=$(command) 2>/dev/null if [ $(#testv) == "!" ]; then echo "Exclamation mark!" else echo "No exclamation mark." fi } 我应该如何重写上面的代码以避免错误测试:2:=未找到? 解决方法
这应该工作:
if [ $testv = '!' ]; then 这里有几个问题: > $(…)运行命令并替换其输出;您想要替换变量值,因此请使用$var或${var}. 或者,您可以使用[[]]而不是[],因为它理解==(并且通常具有更清晰的语法): if [[ $testv == '!' ]]; then 顺便说一下,我相信这个脚本在zsh中运行的标签;如果没有,语法将有点不同(基本shell没有[[]],除了zsh之外的任何东西都会对$testv的值进行不必要的解析,除非它是双引号).如果您不确定(或希望它是可移植的),这里的版本应该适用于任何符合posix的shell: if [ "$testv" = '!' ]; then (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |