
我只能做簡單的表達,例如1=1 and 0=1
test 1 = 1 -a 0 = 1
但是如何做複雜的表達式呢1=1 and (0=1 or 1=1)
?
答案1
使用多個測試調用:
test 1 = 1 && test 0 = 1 -o 1 = 1
或 [[:
[[ 1 = 1 && (0 = 1 || 1 = 1) ]]
答案2
您可以使用test
or [
...,]
只要您小心,記住括號必須轉義並且術語必須用空格分隔:
if [ \( a = a \) -a \( a = b -o b = b \) ]
then echo Yes
else echo No
fi
這對我來說是“是”。不過,使用 Bash 和 Korn shell [[
...]]
運算子通常更容易;你不必做那麼多的逃避。
答案3
問題已經得到解答,但您可能會考慮一些風格提示(也可能會拒絕:-)):
如果你是寫它的人,並且發現它令人困惑,那麼也許:
- 即使不需要,使用 extra () 可能會更清楚。
- 也可以使用巢狀迴圈而不是大量的 and 語句。
答案4
上面的弗洛里安基本上是正確的,但請記住,bash 也有算術擴展,當您比較變數時,這會更好一些。
看這裡了解更多。