4
# Pattern matching using the # ## % %% parameter substitution operators.
7
pattern1=a*c # * (wild card) matches everything between a - c.
10
echo "var1 = $var1" # abcd12345abc6789
11
echo "var1 = ${var1}" # abcd12345abc6789
13
echo "Number of characters in ${var1} = ${#var1}"
16
echo "pattern1 = $pattern1" # a*c (everything between 'a' and 'c')
18
echo '${var1#$pattern1} =' "${var1#$pattern1}" # d12345abc6789
19
# Shortest possible match, strips out first 3 characters abcd12345abc6789
21
echo '${var1##$pattern1} =' "${var1##$pattern1}" # 6789
22
# Longest possible match, strips out first 12 characters abcd12345abc6789
27
pattern2=b*9 # everything between 'b' and '9'
28
echo "var1 = $var1" # Still abcd12345abc6789
30
echo "pattern2 = $pattern2"
32
echo '${var1%pattern2} =' "${var1%$pattern2}" # abcd12345a
33
# Shortest possible match, strips out last 6 characters abcd12345abc6789
35
echo '${var1%%pattern2} =' "${var1%%$pattern2}" # a
36
# Longest possible match, strips out last 12 characters abcd12345abc6789
37
# ^^^^ |-------------|
39
# Remember, # and ## work from the left end (beginning) of string,
40
# % and %% work from the right end.