引數替換中的模式匹配
# 和## 從字串的左邊開始,並且去掉左邊的字串,
% 和 %% 從字串的右邊開始,並且去掉右邊的子串.
例如
name=hello lhhs "root"
name=${name#'"'}; name=${name%'"'}
結果為root
################################Start Script#######################################
1 #!/bin/bash
2 # patt-matching.sh
3
4 # 使用# ## % %%來進行引數替換操作的模式匹配.
5
6 var1=abcd12345abc6789
7 pattern1=a*c # * (萬用字元) 匹配a - c之間的任何字元.
8
9 echo
10 echo "var1 = $var1" # abcd12345abc6789
11 echo "var1 = ${var1}" # abcd12345abc6789
12 # (alternate form)
13 echo "Number of characters in ${var1} = ${#var1}"
14 echo
15
16 echo "pattern1 = $pattern1" # a*c (everything between 'a' and 'c')
17 echo "--------------"
18 echo '${var1#$pattern1} =' "${var1#$pattern1}" # d12345abc6789
19 # 最短的可能匹配, 去掉abcd12345abc6789的前3個字元
20 # |-| ^^^
21 echo '${var1##$pattern1} =' "${var1##$pattern1}" # 6789
22 # 最遠的匹配,去掉abcd12345abc6789的前12個字元.
23 # |----------| ^^^^
24
25 echo; echo; echo
26
27 pattern2=b*9 # 'b' 到'9'之間的任何字元
28 echo "var1 = $var1" # 還是 abcd12345abc6789
29 echo
30 echo "pattern2 = $pattern2"
31 echo "--------------"
32 echo '${var1%pattern2} =' "${var1%$pattern2}" # abcd12345a
33 # 最近的匹配, 去掉abcd12345abc6789的最後6個字元
34 # |----| ^^^^
35 echo '${var1%%pattern2} =' "${var1%%$pattern2}" # a
36 # 最遠匹配, 去掉abcd12345abc6789的最後12個字元
37 # |-------------| ^^^^^^
38
39 # 記住, # 和## 從字串的左邊開始,並且去掉左邊的字串,
40 # % 和 %% 從字串的右邊開始,並且去掉右邊的子串.
41
42 echo
43
44 exit 0