首頁 > 運維 > linux運維 > 全面整理linux下shell中各種括號的作用及用法

全面整理linux下shell中各種括號的作用及用法

齐天大圣
發布: 2020-09-18 17:08:29
原創
3730 人瀏覽過

當初自己在學習shell程式設計的時候,被各種括號的用法搞得頭昏腦漲。靠著逐步的熟悉和積累,才終於掌握的所有的括號的用法。現在,把自己總結出來的分享給大家。

註:看本文檔的前提是你已經有了bash以及shell程式設計的基礎。

單小括號()

但小括號常見的兩個作用:指令取代以及陣列的初始化

指令取代

當碰到$()結構時,shell就把括號的內部指令執行,並傳回結果

# tmp=$(date)
# echo $tmp
Fri Sep 18 10:22:30 CST 2020
登入後複製

初始化數組

# 初始化数组
lnmp=(linux nginx mysql php)
登入後複製

雙小括號(())

記住雙括號有一個特點,就是括號內的要符合c語言的語法,使用變數名時不需要加上$符號的。

雙小括號的用法比較多,它可以用來當作整數計算(不支援小數)。例如:$((3 2))

# echo $((1+3))
4
# n1=3
# echo $((n1+7))
10
登入後複製

只要符合c語言語法的運算擴展,都可以寫在括號裡

# echo $((3+4>5 ? 1 :0)) 
1
# echo $((3+4>9 ? 1 :0)) 
0
登入後複製

重新給變數賦值,這個時候不可在括號外加$符

# i=1;((i++));echo $i;
2
# i=1;((i=100));echo $i;
100
登入後複製

雙括號也常用在for迴圈中

for ((i=0;i<5;i++));do echo -n $i;done
登入後複製

#單方括號[]

單方括號最常見用於邏輯判斷中,另外它還可以作為數組的下標,以及在正則中表示一段範圍

shell腳本中用於條件判斷:

if [ 1 > 2 ] then
    ……
fi
登入後複製

也可以作為數組下標:

# echo ${lnmp[1]}
nginx
登入後複製

在正規中使用,表示一段範圍

[0-9]  表示数子0-9都行
登入後複製

#雙方括號

和單括號一樣,雙方括號也用在條件判斷中,但它比單方括號更加的通用。以下舉例:

[ a > b ] && [ a > 0 ]或[ a > b -a a > 0 ]
改成双括号
[[ a > b && a > 0 ]]
登入後複製

單花括號{}

#花括號拓展。 (通配(globbing))將對花括號中的檔名做擴充。在大括號中,不允許有空白,除非這個空白被引用或轉義。

例如輸入指令 rm -f {1,2}.txt將刪除1.txt和2.txt檔案。

單花括號中..的作用

#兩個點在這裡表示一段範圍的意思。例如

echo {1..10}  #将打印1,2,3,4,5,6,7,8,9,10
登入後複製

花括號還常用在shell腳本裡,用於程式碼區塊。

初次之外,單花括號還可以用作變數內容的替換和刪除以及變數內容的測試,給出一個常見的例子。我們常常會判斷一個變數是否存在,如果不存在,則給該變數設定新值。

val=${n1:-test}
登入後複製

上面程式碼表示如果n1這個變數不存在或為空,則將val變數值設為test,否則val值為n1變數的值

以上是全面整理linux下shell中各種括號的作用及用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板