我想在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构造。我该怎么办?
答案 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
为真。