Bash Shell 裡的各種括號

2021-06-28 01:25:29 字數 1267 閱讀 8067

今天在 segmentfault 上看到又有人問起關於shell裡各種括號的問題。對於很多玩shell的人,括號是個很尷尬的問題,用起來沒問題,說起來不明白,我在這裡總結一下bash shell幾種括號的用法和區別,別的shell我不會。。。

(( )) :一對圓括號有兩個地方用到。

1,for迴圈,

for (( expr1 ; expr2 ; expr3 )) 

這裡一對雙括號裡邊的表示式,gnu的文件指出,expr1支援 shell arithmetic;expr2不為0時,expr3被賦值且語句執行。說的很麻煩,還要花時間搞清楚什麼是shell arithmetic。其實一言以蔽之,支援數字條件。比如:

for (( a=0 ; a<10 ; a++ )); do echo $a; done

會輸出 0 1 2 3 (帶換行哦~~~)

2,數學表達

(( )) 和 $(( ))

(( )) 的用法與let一樣,就不用多解釋了吧~~~

$(( ))就是把計算結果拿出來,可以用在雙引號裡邊,比如:

echo "1+2=$(( 1 + 2 ))"

會輸出 1+2=3

count=1

count=$(($count+1))

echo $count

( ):乙個圓括號

在for迴圈裡,跟c語法一樣一樣的。

或者是子程式,返回整個裡邊表達的返回值。裡邊的變數都是區域性的,修改不會帶到外邊。舉例子

a=1(a=3; echo $a)

echo a

結果是 3 1

還有個就是圈陣列。。。這個就沒神馬意思了

[ ]:乙個方括號,是bash的命令,查man手冊是可以查到的,跟test一樣,在手冊裡可以看到很多用法。比如-b -c -gt -eq 什麼的很多,還有用-a表示與,-o表示或等等

[[ ]]:一對方括號是乙個方括號的加強版,則是shell的保留字

,裡邊支援了 || && 等等這些符號。一般我喜歡用這個

還有相對複雜的

幾個用處,區分變數,如:

var=abcd; echo $efg;

這樣,bash就不會認為變數是varefg了

還有用來擷取字串的 $語法比較靈活多變,這裡不做多解釋,大家有興趣可以自己去搜搜資料,一般我指令碼用到的字串處理,這個都能搞定了。

**塊。用來區分**的,但是跟( )有個區別,就是在末尾要加上 ;

目前看到常用的用法也就是這樣,肯定不全,歡迎補充,歡迎交流。

Bash Shell 裡的各種括號

bash shell 裡的各種括號 對於很多玩shell的人,括號是個很尷尬的問題,用起來沒問題,說起來不明白,我在這裡總結一下bash shell幾種括號的用法和區別,別的shell我不會。一對圓括號有兩個地方用到。1,for迴圈,for expr1 expr2 expr3 這裡一對雙括號裡邊的表...

Bash Shell 裡的各種括號

天在 segmentfault 上看到又有人問起關於shell裡各種括號的問題。對於很多玩shell的人,括號是個很尷尬的問題,用起來沒問題,說起來不明白,我在這裡總結一下bash shell幾種括號的用法和區別,別的shell我不會。一對圓括號有兩個地方用到。1,for迴圈,for expr1 e...

Bash Shell 裡的各種括號

天在 segmentfault 上看到又有人問起關於shell裡各種括號的問題。對於很多玩shell的人,括號是個很尷尬的問題,用起來沒問題,說起來不明白,我在這裡總結一下bash shell幾種括號的用法和區別,別的shell我不會。一對圓括號有兩個地方用到。1,for迴圈,for expr1 e...