shell 中的括號——() [] {} 使用

$()shell

用做命令替換,同``,如var=`ls` 和var=$(ls)的結果同樣spa

可使用echo $var | xargs –n 1查看命令行

${}字符串

用做變量替換,與$相似,可是能夠作形如var=${A}B這種工做,即在變量A後面增長一個B,能夠認爲是增強版的$Atest

$(())變量

用於計算,一樣可用於計算的還有let, expr擴展

語法

res=$((5+2))im

let res=5+2重定向

res=`expr 5 + 2`


[[]]與[]

一、  前者「[[」是關鍵字,後者是內建命令,至關於test ;

二、  邏輯判斷用法不一致

[ : -a –o

[[ : && ||

三、  對於[]來講,要用-eq 等進行數字比較,而不能傳入字符串和數字進行比較,而在[[]]中會把字符串直接轉爲0;當比較的變量爲空時,使用[]就會報錯,而[[]]不存在這種問題


四、  [[]]能夠用於算術運算,而[]不行

如:

[[ 99+1 –eq 100 ]]  true

[ 99+1 –eq 100 ]  報錯, 但可使用[ $((99+1)) –eq100 ]

五、 命令行參數的區別

1)        [ ... ]爲shell命令,因此在其中的表達式應是它的命令行參數,因此串比較操做符">" 與"<"必須轉義,不然就變成IO重定向了;

如: [ 0 \< 1] 與[[ 0 < 1]]

2)        因爲"[["是關鍵字,不會作命令行擴展,因此在[[中"<"與">"不需轉義,可是相對的語法就稍嚴格些。例如在[ ... ]中能夠用引號括起操做符,由於在作命令行擴展時會去掉這些引號,而在[[ ... ]]則不容許這樣作;

         $[[ "-z" "" ]]   報錯,而$[「-z」 「」]  true

相關文章
相關標籤/搜索