2013-12-12 54 views
1

在bash腳本,Unix的雙重測試操作和關係運算符

if [[ $var1 != $var2 ]] 

相當於形式

[ $var1 -ne $var2 ] 

爲什麼不關係運算符(<=>=)的雙重考驗裏面工作形成?我在其中一個腳本中試過[[ $var1 <= $var2 ]],它給我一個語法錯誤。我必須使用表格[[ $var1 < $var2 || $var1 = $var2 ]]?還是有我失蹤的東西?

回答

1

可以使用(())結構:

$ ((4 <= 5)) && echo ok 
ok 
$ ((4 <= 3)) && echo ok || echo ko 
ko 

?或:

var1=4 
var2=5 
if ((var1 <= var2)) ; then 
    echo ok 
fi 
+0

你不介意的,在適當時候使用((VS [ –

+0

'(('是擬訂數字表達式,像'$(())'。參見http://tldp.org/LDP/abs/html/dblparens.html'[['寧可用於字符串(等號,正則表達式等) – damienfrancois

+0

啊,我因此,一般來說,((用於數字表達式,[用於字符串?我的教授正在教給我們單個測試[form plu操作符-o,-a,-gt,-lt等。我更喜歡雙重形式,我想採用那些形式來支持[形式。我有什麼理由不應該? –