2014-04-02 25 views
0

我一直在試圖找到示例(s),但無處可去。如何在bash腳本的if-else中混合和/或運算符?

我試圖寫這個表達式(不那麼複雜)作爲bash中的if-else語句。

if (expr1 and (expr2 or expr3)) then 
    do-something 
fi 

任何想法如何做到這一點?感謝

+1

你可以用'如果[表達式1] && [表達式2 -o表達式3]',但我不知道這是否是最好的辦法。它可以工作,但是:'[「$ a」-eq 1] && [「$ b」-eq 3 -o「$ c」-eq 2] && echo「yes」' – fedorqui

+0

'a和(b或c)與'b或c相同並且a' – Kent

+0

參見章節7.2.4在這裏:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_02.html – elias

回答

2

表達通常使用的方法那就是:

if [ expr1 ] && [[ expr2 || expr3 ]]; then 
    # do something 
fi 

而不是使用測試命令,並利用以下形式的:

EXPR1 -o EXPR2 True if either expr1 OR expr2 is true. 

help [[

EXPR1 || EXPR2 True if either EXPR1 or EXPR2 is true; else false 
0

您可以像

if [ expr1 ] && ([ expr2 ] || [ expr3 ]); then 
    #do something 
else 
    #do something else 
fi 

有你可以用它來快速測試條件的絕招:

[ expr1 ] && ([ expr2 ] || [ expr3 ]) && echo "something" || echo "something else" 
+0

ad'cond && ifyes || ifno' - 這很好,但是一定要小心,因爲當ifyes失敗的時候,你會以'ifno'結尾...... – jm666

+0

@ jm666是的。這是個好主意。 –