2012-02-04 42 views
-1

條款我想這樣做在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構造。我該怎麼辦?

回答

1

它正確打印hello因爲[ "x$var2" = "x" ]是真實的,當var2爲空字符串。

+0

(儘管如此,您可能希望將'-q'添加到第二個'grep'。) – Arkku 2012-02-04 19:44:14

3

假設你有擊3.x的,你可以用這個簡化代碼:

#!/bin/bash 

var1=abc 
var2= 

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

@abc那你爲什麼把這個標記爲'bash'? – SiegeX 2012-02-04 19:53:04

+0

感謝有用的[[]]構造。 – abc 2012-02-04 20:00:19