2012-05-23 34 views
5

最近我一直在使用一些bash腳本,並一直在查看手冊頁。從我所蒐集的,$(())的意思是expr[ ]的意思是test

對於$(())

echo $((5 + 3)) 

具有相同的輸出爲:

echo $(expr 5 + 3) 

對於[ ]

test 'str' = 'str' 

具有相同的成功值爲:

[ 'str' = 'str' ] 

我的理解是否正確?

+2

您也可以考慮[[]],它允許您進行模式匹配(其他事情)。 Single []是Bourne shell語法。 – cdarke

+0

感謝您的領導!我已經知道你們都提供了各種幫助!乾杯! – Vern

+0

'$(())'不是雙擊,它是符合POSIX標準的語法。 'expr'是20世紀70年代的古董。 –

回答

9

((...))構造相當於bash內建letlet大部分是expr所做的。

$((...))構造,注意$開始時,會像$(...)那樣替換內部表達式的輸出做。

[...]構造實際上只是test的另一個名稱。

請參閱bash幫助頁面以獲取更多信息。

  • help "("
  • help let
  • help [
  • help test

還看到:

+0

非常感謝!併爲鏈接呢!他們真的很有用:) – Vern

6

你是正確的約[ ]test

關於$(()),這是一個更復雜的更換expr。您可以計算比expr更復雜的表達式。