溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

bash的擴(kuò)展介紹

發(fā)布時(shí)間:2020-06-03 17:30:58 來(lái)源:億速云 閱讀:339 作者:Leah 欄目:系統(tǒng)運(yùn)維
本篇文章主要介紹bash中的擴(kuò)展。其中重點(diǎn)介紹了bash中的花括號(hào)擴(kuò)展Brace Expansion,詳細(xì)介紹了括號(hào)擴(kuò)展的定義和格式,有一定的參考價(jià)值,有需要的朋友可以參考一下。
  1. bash的所有擴(kuò)展(expansion)如下:
    Brace Expansion(花括號(hào)擴(kuò)展)
    Tilde Expansion(波浪號(hào)擴(kuò)展)
    Parameter and Variable Expansion (參數(shù)和變量擴(kuò)展)
    Command Substitution(命令置換)
    Arithmetic Expansion(算數(shù)擴(kuò)展)
    Word Splitting(單詞分割)
    Pathname Expansion(路徑擴(kuò)展)
    上面列舉的順序正是bash在擴(kuò)展時(shí)的順序
    bash的擴(kuò)展介紹
  2. 花括號(hào)展開(kāi)的定義(Brace Expansion)
    花括號(hào)擴(kuò)展也稱大括號(hào)擴(kuò)展,是可以讓bash生成任意字符串的一種擴(kuò)展功能。它與“路徑擴(kuò)展”非常相似,唯一不同的是生成的字符串可以是不存在的路徑或者文件名
    在bash中,花括號(hào)擴(kuò)展在諸多擴(kuò)展中優(yōu)先級(jí)最高,因此類似于echo {a,b}$PATH的語(yǔ)句在完成花括號(hào)擴(kuò)展之后的結(jié)果應(yīng)該為 a$PATH b$PATH,而對(duì)PATH環(huán)境變量的擴(kuò)展要到后續(xù)的“參數(shù)和變量擴(kuò)展”階段才開(kāi)始
  3. 花括號(hào)擴(kuò)展的兩種格式
    3.1 第一類格式為:
    preamble+{string1,string2,string3,...,stringN}+postcript
    左右的花括號(hào)是必須的,中間的字符串列表分別由逗號(hào)隔開(kāi),注意逗號(hào)前后不能有空格,如果string中有空格,則需要單引號(hào)或者雙引號(hào)擴(kuò)起來(lái)
    bash在實(shí)際擴(kuò)展時(shí),會(huì)將preamble和花括號(hào)中的所有字符串(按照從左到右的順序)相連,最后分別加上postscript。
    此外,花括號(hào)中間至少有一個(gè)逗號(hào),否則bash不會(huì)認(rèn)為花括號(hào)擴(kuò)展,例如:
    echo {moneny},想要輸出money,需要改為echo{money,}  如下:
    [root@master01 ~]# echo {money}
    {money}
    [root@master01 ~]# echo {money,}
    money
    查看完整的例子(注意空格的處理)
    [root@master01 ~]# echo sp{el,il,al}l
    spell spill spall
    [root@master01 ~]# echo sp{el,il, al}l
    sp{el,il, al}l
    [root@master01 ~]# echo sp{el,il,' al'}l
    spell spill sp all
    [root@master01 ~]# echo sp{el,il," "al}l
    spell spill sp all
    [root@master01 ~]# echo sp{el,il,' 'al}l
    spell spill sp all
    [root@master01 ~]# echo sp{el,il," al"}l
    spell spill sp all
    3.2 第二類格式為:
    preamble+{<START>..<END>..[INCR]}+postscript
    其中<START>..<END>組合而成的表達(dá)式術(shù)語(yǔ)叫做序列表達(dá)式(sequence expansion),表示一個(gè)特定的范圍。當(dāng)<START>和<END>是數(shù)字,代表的是數(shù)字范圍;當(dāng)<START>和<END>是單個(gè)字母時(shí),代表是字符范圍(默認(rèn)LC_ALL字符排列)。<START>和<END>必須同為數(shù)字或者字母,否則bash不認(rèn)為是花括號(hào)擴(kuò)展,而是原樣輸出。
    [root@master01 ~]# echo {1..12}
    1 2 3 4 5 6 7 8 9 10 11 12
    [root@master01 ~]# echo {3..-2}
    3 2 1 0 -1 -2
    [root@master01 ~]# echo {a..g}
    a b c d e f g
    [root@master01 ~]# echo {h..a}
    h g f e d c b a
    其中的<INCR>是可選的,代表的是區(qū)間范圍的遞增數(shù),它必須是數(shù)字。例如:
    [root@master01 ~]# echo {0..10..2}
    0 2 4 6 8 10
    從0開(kāi)始,每遞增2個(gè)數(shù)字就取出相應(yīng)的數(shù)字。
    如果不指定<INCR>,那么默認(rèn)是1或者是-1,具體是1或者-1,要看前面區(qū)間范圍是遞增還是遞減的,比如上面例子的{a..g}中默認(rèn)是1,{h..a}默認(rèn)為-1
    另外,當(dāng)<START>和<END>是數(shù)字時(shí),我們可以通過(guò)數(shù)字前面加0來(lái)輸出結(jié)果長(zhǎng)度保持一致,
    [root@master01 ~]# echo {1..10}
    1 2 3 4 5 6 7 8 9 10
    [root@master01 ~]# echo {01..10}
    01 02 03 04 05 06 07 08 09 10
    [root@master01 ~]# echo {001..10}
    001 002 003 004 005 006 007 008 009 010
    這樣格式長(zhǎng)度一樣,會(huì)顯得很美觀
看完上述內(nèi)容,你們對(duì)bash中的花括號(hào)擴(kuò)展有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI