bash if语句出错:预期的条件二进制运算符

Hos*_*inK 1 bash grep

我的bash脚本中有一个if语句,如下所示:

if [[ eb status my-env-staging-worker | grep 'Green' -ne 0 ] || [ eb status my-env-staging-web | grep 'Green' -ne 0 ]]
Run Code Online (Sandbox Code Playgroud)

基本上如果第一个或第二个eb status命令没有字符串Green我想执行其他一些东西.

但是我得到以下错误:

状态脚本附近的条件二元运算符预期语法错误返回退出代码2

你能告诉我什么错了吗?

Joh*_*ica 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'
Run Code Online (Sandbox Code Playgroud)

我已添加-q以抑制grep的输出,因为您只关心返回代码.

如果要反转条件,请写入:

if ! eb status my-env-staging-worker | grep -q 'Green' && ! eb status my-env-staging-web | grep -q 'Green'
Run Code Online (Sandbox Code Playgroud)

要么

if ! { eb status my-env-staging-worker | grep -q 'Green' || eb status my-env-staging-web | grep -q 'Green'; }
Run Code Online (Sandbox Code Playgroud)

在这里,您可以查看{}用于分组.大括号和圆括号是bash的分组标记.