繁体   English   中英

shell在单个if条件中编写多个条件的脚本

[英]shell scripting multiple conditions in single if condition

在下面的代码中,在/ bin / sh中,当满足第一个条件时为什么评估-o的第二个条件。 方案是$ output在单独的行中有多个“ ORA-”字符串,但没有“ INVALID_OBJECTS”字符串。 所以第一部分是正确的,但是第二部分变成

“” -gt 0

失败了

sh:[:缺少`]'

if [ "`echo "$output" | grep ORA-`" -o "`echo "$output" | awk '/INVALID_OBJECTS/{getline;getline;print $0}' | sed 's/\s//g'`" -gt 0 ]; then
        echo -e "\n*** ERROR:  ***\n"
fi

更新:$ output保存pl-sql块的stdout。 最终用户在执行pl-sql块期间输入了Ctrl + C,这导致与SQL * Plus的连接断开。 因此,标准输出最终出现多个“ ORA-nnnnn”错误。 如果没有连接丢失,我将在$ output中得到以下几行,这些行在-o检查的左侧进行检查。

INVALID_OBJECTS  
_ _ _ _ _ _ _ _ _ _  
                   3

好吧,让我们先删除多余的引号来简化您的表达式。 测试命令基本上可以归结为:

[ `echo $output | grep ORA-` -o `echo $output | awk '/INVALID_OBJECTS/{getline;getline;print $0}' | sed 's/\s//g'` ]

所以,你有基本为零或多个字(取决于grep的收益率是什么)在左侧-o ,其次是零或一个字(这取决于AWK收益率)的右侧-o

现在我不知道您要在这里实现什么,但是从此分析可以看出,您的命令没有任何意义。

暂无
暂无

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

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