Linux Bash 變量內(nèi)容修改完整呈現(xiàn)
我們知道兩種對變量取勝的方法:echo $HOME echo ${HOME}在echo ${variable}的方法中,還可以對變量的內(nèi)容進行修改,只要加上一些字符標志,后面再接著使用比對字符串,就可以修改變量的內(nèi)容了。假設(shè)變量名為:vbird,并且內(nèi)容為/home/vbird/testing/testing.x.sh
◆1、完整呈現(xiàn)vbird這個變量:
vbird="/home/vbird/testing/testing.x.sh"
echo ${vbird}
/home/vbird/testing/testing.x.sh
◆2、在vbird變量中,從最前面開始比對
若開頭為 / ,則刪除兩個/之間的所有數(shù)據(jù),即 /*/
echo ${vbird##/*/}
testing.x.sh ---------刪除了/home/vbird/testing/
echo ${vbird#/*/}
vbird/testing/testing.x.sh ----------只刪除了/home/而已
------在這兩個例子中,變量名后面如果接了兩個##,表示在##后面的字符串取“最長的”那一段;如果只有一個#,表示取“最小的”那一段。(自注:“最小的那一段“表示從左到右離***個字符最近并且和***個字符相同的字符之間的內(nèi)容,最長則反之)
◆3、承上題,如果是從后面開始,刪除/*呢?
echo ${vbird%%/*/}
/home/vbird/testing/testing.x.sh ---------都沒有刪除
echo ${vbird%%/*}
--------都被刪除了
echo ${vbird%/*}
/home/vbird/testing --------只刪除 /testing.x.sh部分
在這個例子中要特別注意,那個%比對的是“***面那個字符”的意思,所以***個當然不對,因為vbird這個變量的內(nèi)容***面是h而不是/。至于%%/*則是刪除“最長的那個/*”,當然就是全部,而%/*則是最短的那個。(自注:最短最長同上注,雖然%表示反向的比對,但需注意的是在${variable}中輸入的時候仍 然按著從左到右的順序,即與變量內(nèi)容中的字符的順序相同。如下例:
echo ${vbird%t*h}
/home/vbird/testing/tes ------t.ing.x.sh被刪除了
如果是
echo ${vbird%h*t}
/home/vbird/testing/testing.x.sh ----則輸出沒有變化(因為比對都是與***個字符比,變量內(nèi)容的***個字符為h,而命令中給出的***個字符為t,與真實的變量內(nèi)容不符。)
◆4. 將vbird變量中的testing取代為TEST
echo ${vbird/testing/TEST}
/home/vbird/TEST/testing.x.sh
echo ${vbird//testing/TEST}
/home/vbird/TEST/TEST.x.sh
如果變量后面接的是/ 時,表示后面是進行"取代"的工作,而且僅取代“***個”,如果是//,則表示全部的字符串都取代。
【編輯推薦】