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

當(dāng)初自己在學(xué)習(xí)shell編程的時(shí)候,被各種括號的用法搞得頭昏腦漲。靠著逐步的熟悉和積累,才終于掌握的所有的括號的用法。現(xiàn)在,把自己總結(jié)出來的分享給大家。

注:看本篇文檔的前提是你已經(jīng)有了bash以及shell編程的基礎(chǔ)。

單小括號()

但小括號常見的兩個(gè)作用:命令替換以及數(shù)組的初始化

命令替換

當(dāng)碰到$()結(jié)構(gòu)時(shí),shell就把括號的內(nèi)命令執(zhí)行,并返回結(jié)果

#?tmp=$(date) #?echo?$tmp Fri?Sep?18?10:22:30?CST?2020

初始化數(shù)組

#?初始化數(shù)組 lnmp=(linux?nginx?mysql?php)

雙小括號(())

記住雙括號有一個(gè)特點(diǎn),就是括號內(nèi)的要符合c語言的語法,使用變量名時(shí)不需要加上$符號的。

雙小括號的用法比較多,它可以用作整數(shù)計(jì)算(不支持小數(shù))。例如:$((3+2))

#?echo?$((1+3)) 4 #?n1=3 #?echo?$((n1+7)) 10

只要符合c語言語法的運(yùn)算擴(kuò)展,都可以寫在括號里

#?echo?$((3+4>5???1?:0))? 1 #?echo?$((3+4>9???1?:0))? 0

重新給變量賦值,這個(gè)時(shí)候不可在括號外加$符

#?i=1;((i++));echo?$i; 2 #?i=1;((i=100));echo?$i; 100

雙括號還經(jīng)常用在for循環(huán)

for?((i=0;i<p><strong><span style="font-size: 24px;">單方括號[]</span></strong></p><p>單方括號最常見用于邏輯判斷中,另外它還可以作為數(shù)組的下標(biāo),以及在正則中表示一段范圍</p><p>shell腳本中用于條件判斷:</p><pre class="brush:php;toolbar:false">if?[?1?&gt;?2?]?then ????…… fi

也可以作為數(shù)組下標(biāo):

#?echo?${lnmp[1]} nginx

在正則中使用,表示一段范圍

[0-9]??表示數(shù)子0-9都行

雙方括號

和單括號一樣,雙方括號也用在條件判斷中,但它比單方括號更加的通用。下面舉一個(gè)例子:

[?a?&gt;?b?]?&amp;&amp;?[?a?&gt;?0?]或[?a?&gt;?b?-a?a?&gt;?0?] 改成雙括號 [[?a?&gt;?b?&amp;&amp;?a?&gt;?0?]]

單花括號{}

花括號拓展。(通配(globbing))將對花括號中的文件名做擴(kuò)展。在大括號中,不允許有空白,除非這個(gè)空白被引用或轉(zhuǎn)義。

比如輸入命令 rm -f {1,2}.txt將刪除1.txt和2.txt文件。

單花括號中..的作用

兩個(gè)點(diǎn)在這里表示一段范圍的意思。比如

echo?{1..10}??#將打印1,2,3,4,5,6,7,8,9,10

花括號還常用在shell腳本里,用于代碼塊。

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

val=${n1:-test}

上面代碼表示如果n1這個(gè)變量不存在或?yàn)榭眨瑒t將val變量值設(shè)置為test,否則val值為n1變量的值

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享