2012年5月2日 星期三

變數值樣式比對


變數值樣式比對 (參考http://www.suse.url.tw/sles10/lesson10.htm)

 另外一種字串運算符的型態,是比對指定的樣式 ( pattern ) 跟變數值,然後才根據比對的結果來決定傳回的變數值。
比對算符代 表 意 義
${var#pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的前面部分比對起,如果有符合之處,就刪除變數值中最短的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/dir/file
suse:~ # echo ${var#/*/}
barry/dir/file
${var##pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的前面部分比對起,如果有符合之處,就刪除變數值中最長的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/dir/file
suse:~ # echo ${var##/*/}
file
${var%pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的後面部分比對起,如果有符合之處,就刪除變數值中最短的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/dir/
suse:~ # echo ${var%/*/}
/home/barry
${var%%pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的後面部分比對起,如果有符合之處,就刪除變數值中最長的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/test.tar.gz
suse:~ # echo ${var%%.*}
/home/barry/test
${var/pat1/pat2}若變數值中含有 pat1,就將第一個 pat1用 pat2 作替代 。
suse:~ # var=/home/barry/barrydir/barryfile
suse:~ # echo ${var/barry/mary}
/home/mary/barrydir/barryfile
${var//pat1/pat2}若變數值中含有 pat1,就將全部的 pat1用 pat2 作替代 。
suse:~ # var=/home/barry/barrydir/barryfile
suse:~ # echo ${var//barry/mary}
/home/mary/marydir/maryfile


還是搞不大懂...

沒有留言: