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

时间:2017-05-25 16:51:52

标签: 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 ]]

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

但是我收到以下错误:

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

你能告诉我什么不对吗?

1 个答案:

答案 0 :(得分: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的分组标记。