我一直在試圖找到示例(s),但無處可去。如何在bash腳本的if-else中混合和/或運算符?
我試圖寫這個表達式(不那麼複雜)作爲bash中的if-else語句。
if (expr1 and (expr2 or expr3)) then
do-something
fi
任何想法如何做到這一點?感謝
我一直在試圖找到示例(s),但無處可去。如何在bash腳本的if-else中混合和/或運算符?
我試圖寫這個表達式(不那麼複雜)作爲bash中的if-else語句。
if (expr1 and (expr2 or expr3)) then
do-something
fi
任何想法如何做到這一點?感謝
表達通常使用的方法那就是:
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
您可以像
if [ expr1 ] && ([ expr2 ] || [ expr3 ]); then
#do something
else
#do something else
fi
有你可以用它來快速測試條件的絕招:
[ expr1 ] && ([ expr2 ] || [ expr3 ]) && echo "something" || echo "something else"
ad'cond && ifyes || ifno' - 這很好,但是一定要小心,因爲當ifyes失敗的時候,你會以'ifno'結尾...... – jm666
@ jm666是的。這是個好主意。 –
你可以用'如果[表達式1] && [表達式2 -o表達式3]',但我不知道這是否是最好的辦法。它可以工作,但是:'[「$ a」-eq 1] && [「$ b」-eq 3 -o「$ c」-eq 2] && echo「yes」' – fedorqui
'a和(b或c)與'b或c相同並且a' – Kent
參見章節7.2.4在這裏:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_02.html – elias