结合bash中if子句的条件

时间:2012-02-04 19:34:12

标签: linux bash

我想在bash中这样做:

   //C pseudo code
   if(cond1 is true and (cond2 is true or cond3 is true))
       do something

这就是

var1=abc
var2=
if echo "$var1" | grep -q 'abc' && ( echo "$var2" | grep 'def' || [ "x$var2" = "x" ] ) 
then
 echo hello
fi

这仍然打印你好。

我真的需要使用echo grep构造。我该怎么办?

2 个答案:

答案 0 :(得分:3)

假设您有Bash 3.x,您可以使用以下方法简化代码:

#!/bin/bash

var1=abc
var2=

if [[ $var1 =~ abc && ( $var2 =~ def || -z $var2 ) ]]; then
  echo hello
fi

答案 1 :(得分:1)

正确打印hello,因为当[ "x$var2" = "x" ]为空字符串时var2为真。