Linux 變數操作記錄

來源:互聯網
上載者:User

標籤:linux變數

變數操作總結:

                                                            

${Var:-Value}        變數Var 為unset 或 null  則輸出Value。 有值則輸出變數Var的值。

${Var:=Value}        變數Var 為unset 或 null  則輸出Value,並且賦值於變數Var。 同上。

${Var:+Value}        變數Var 為unset 或 null  則輸出變數Var。 有值則輸出Value.

${Var:?Value}        變數Var 為unset 或 null  則輸出錯誤資訊Value。有值則輸出變數Var的值。


${Var-Value}        變數Var 為 unset 則輸出Value。 有值或為空白,則輸出變數Var的值。

${Var=Value}        變數Var 為 unset 則輸出Value,並且賦值於變數Var。        同上。

${Var+Value}        變數Var 為 unset 則輸出變數Var。有值或為空白,則輸出Value

${Var?Value}        變數Var 為 unset 則輸出錯誤資訊Value。 有值或為空白, 則輸出變數Var。


 在這種的操作中,只有三種情況:1. 變數有值, 2. 變數沒有值,  3. 沒有變數

 在上面加:的操作符中, 空不代表值,    在下面沒有:號的操作符中,空也代表為值。


            ${變數}      一般變數引用。  {} 一般情況可省略。

            ${#變數}     取變數中字元的個數(長度)。




一、 變數值的編輯: 

        1. 變數字元匹配則不輸出。   2. 變數內容字元位移並截出餘下的部分字元。    

        3. 變數字元的替換。 



  1.  所匹配到的變數內容將不顯示。

    

  操作符:#                  ${變數#匹配字元}

$ do="Hello World"$ echo $doHello World$ echo ${do#He}llo World                    #He沒有顯示$ echo ${do#*l}lo World                     #從左至右匹配

  #號在上面那種變數應用中,把左邊變數的值,按右邊的字串從左至右最短區配,

    所區配到的字元不輸出。 支援萬用字元。 


  操作符: ##

$ echo ${do##*l}d                        #變數的值是Hello World, 從左邊一直匹配到倒數第二個字元l.

  ##號,這個則就是最長區配了。   記住是從左至右的區配順序。


    

  操作符:%              ${變數%匹配字元}

$ echo $doHello World$ echo ${do%ld}Hello Wor$ echo ${do%o*}Hello W

%號跟上面#號的形式都一樣,只不過是從右至左的匹配。 同樣的一個%號是 最短區配


  操作符:%%

$ echo ${do%%o*}Hell

  %%號,兩個%號,最長區配 。  萬用字元都是支援的。 畢竟都是在shell下,經由shell解釋輸出。




 2.  上面的 # % 都是用來定義匹配變數內容的操作。而下面是用來定義固定的字元的操作。


   ${變數:數字}

$ echo $doHello World$ echo ${do:3}lo World                    #變數內容的前三個字元沒有顯示。

  前面的3個字元沒有輸出, 專業點叫作 位移 , 向右位移了3個字元。   


$ echo ${do:3:2}lo$ echo ${do:3:5}lo Wo

  在上面位移的基礎上,再顯示向後截取的幾位字元。 空格可也是字元啊。




3.  替換變數內容。 

   

  ${變數/匹配字元/替換字元}

$ echo ${do/l/L}HeLlo World

把第一個匹配到的字元,也就是l , 替換成大寫L .

這裡是只替換了第一個匹配到的字元。如果把變數後面的/變成兩個,就變成替換所有了。


 ${變數//匹配字元/替換字元}

$ echo ${do//l/L}HeLLo WorLd

替換了所有的l,這裡也是可以用萬用字元的, 但是這裡沒有最長最短匹配之說,只有替換1個還是替換所有的字元。至於效果,親們可以自己試試。




二、 變數....., 不知道叫什麼名了。

            

    在這種的操作中,只有三種情況:1. 變數有值, 2. 變數沒有值,  3. 沒有變數

    注意: 一般情況下,變數為空白也是一種值。 除非有特殊的操作。

        do=              do變數有值了。

        declare  var     產生了var變數,但var變數沒有值。


1.  ${變數-值} 


裡面的是減號。  那個值當然也可以用變數,不過要加上$,相當於變數引用。-號的左邊和右邊完全是不同的兩個部分。


$ echo $doHello World$ echo ${do-kaka}              #在do有值的情況下,輸出do的值。Hello World                            $ unset do                     #刪除變數do$ echo ${do-kaka}              #在沒有do變數的情況下,也就是沒有值。則輸出後面的值。kaka$ do=                          #在do為空白的情況下。$ echo ${do-kaka}              #在do有值的情況下,輸出do的值,do是空值。                                               #所以輸出空。

      這個的別一種方式一般在判斷預設值的時候用。如: do=${do:-kaka} 

      


2.  ${變數=值}   裡面是等號。

$ echo $doHello World$ echo ${do=kaka}                #在do有值的情況下,輸出do的值。Hello World                            $ unset do$ echo ${do=kaka}                #在沒有do變數的情況下,或沒有值。輸出後面的值kaka                                   $ echo $dokaka                             #並且把kaka賦給變數do。

    比 - 多了一項功能,只要在變數,就會把kaka賦給do。



3.  ${變數+值}   裡面是加號。

$ echo $doHello World$ echo ${do+kaka}              #do有值的情況下,輸出kakakaka$ unset do$ echo ${do+kaka}              #在沒有do這個變數的情況下或者沒有值。那就沒有吧。                                        $ do=$ echo ${do+kaka}              #空值,輸出kakakaka

     看樣子正好與 - 相反, 這個是變數有值則用後面的值,而 - 號是沒值則用後面的值。


4.  ${變數?值}    

$ echo $doHello World$ echo ${do?kaka}Hello World$ unset do$ echo ${do?kaka}              # 看到了沒,在沒有do這個變數的情況下或者沒有值。                               # 提示錯誤資訊是 kakabash: do: kaka$ do=$ echo ${do?kaka}

    除了沒有值的情況下會報錯,並且報錯資訊是kaka外,就沒有別的了。



    下面還是關於 - = + ? 的,不過變成了 :-  :=  :+  :?   。


    不一樣之處就是把空值給抹去了,從此以後空就真的空了, 空不再代表值而存在, 

    而是跟unset一樣。 



    這裡說明一下, 以shell來說。其實unset就是把變數的記憶體空間的地址給撤銷了, 

    而變數空值,就是有變數的記憶體空間地址,不過記憶體空間裡面沒有資料。  



1.  ${變數:-值} 

$ echo $doHello World$ echo ${do:-kaka}Hello World$ unset do$ echo ${do:-kaka}               #沒有do變數,同樣的相當於沒有值。 輸出kakakaka$ do=$ echo ${do:-kaka}                #空不再代表值, 在do沒有值的情況下                                  #輸出kakakaka

怎麼樣,區別只有一點, 空不再代表值了。 


 2. ${變數:=值} 

$ echo $doHello World$ echo ${do:=kaka}Hello World$ echo $doHello World$ unset do$ echo ${do:=kaka}kaka$ echo $dokaka$ do=$ echo ${do:=kaka}                  #空不再代表值,所以輸出kakakaka$ echo $dokaka

還是那個意思,kaka輸出,並且賦值給了do。    空不再代表值了。


3. ${變數:+值}   

$ echo $doHello World$ echo ${do:+kaka}                #在do有值的情況下,輸出kakakaka$ unset do$ echo ${do:+kaka}                #在do不存在的時候,也就是沒有值。 輸出do的值,                                  #而do的值當然是不存在的,輸出空白行。$ do=$ echo ${do:+kaka}                #do為空白,空不再代表值。 沒有值就不會輸出後面的值。                                  #同樣的空白行。

+ 號是有值才會用後面的那個值的。 跟-號正好相反。


4. ${變數:?值} 

$ echo $doHello World$ echo ${do:?kaka}Hello World$ unset do$ echo ${do:?kaka}                   #沒有do變數,當然沒有值,報kaka錯誤。bash: do: kaka$ do=$ echo ${do:?kaka}                   #do為空白,代表沒有值。 報kaka錯誤。bash: do: kaka

這個跟-號也差不多了, 只不過還裡是輸出的錯誤資訊。






good boy, nice girl.



本文出自 “On Foot” 部落格,請務必保留此出處http://fanqie.blog.51cto.com/9382669/1649669

Linux 變數操作記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.