我的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
你能告诉我什么错了吗?
[[而[不是用于分组.他们是独立的命令.而不是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的分组标记.