2017-05-25 87 views
1

我有一个if语句在我的bash脚本如下:错误在bash if语句:有条件的二进制运算符预期

if [[ eb status my-env-staging-worker | grep 'Green' -ne 0 ] || [ eb status my-env-staging-web | grep 'Green' -ne 0 ]] 

基本上,如果第一或第二EB status命令没有这个串绿,我想执行一些其他的东西。

但是我得到以下错误:

条件二进制运算预计近期状态 脚本返回退出代码 语法错误2

你能告诉我什么是错?

回答

5

[[[不适用于分组。他们是独立的命令。取代if [[ cmd1 -ne 0 ] || [ cmd2 -ne 0 ]],省略括号和测试,并简单地写入if cmd1 || cmd2

if eb status my-env-staging-worker | grep -q 'Green' || eb status my-env-staging-web | grep -q 'Green' 

我添加-q压制的grep的输出,因为你只关心返回代码。

如果要反转的条件,写:

if ! eb status my-env-staging-worker | grep -q 'Green' && ! eb status my-env-staging-web | grep -q 'Green' 

if ! { eb status my-env-staging-worker | grep -q 'Green' || eb status my-env-staging-web | grep -q 'Green'; } 

在这里你可以看到{}用于分组。大括号和括号是bash的分组标记。

+1

好像OP想要的是相反的,所以需要一些'!'。 –

+0

我想_反义词是不明确的,但我认为它应该是'! cmd1 || ! cmd2'。 –

+0

是的,它是含糊不清的。如果我把问题解释错误,OP可以做出适当的调整。 –