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