#
用于刪除左起第一個匹配內容,即截取右側內容
##
用于刪除右起第一個匹配內容,即截取右側內容
%
用于刪除右起第一個匹配內容,即截取左側內容
%%
用于刪除左起第一個匹配內容,即截取左側內容
舉例
file=/dir1/dir2/dir3/my.file.txtecho ${file#*/} # 刪掉左起第一個/及其左側內容,*號為通配符,/為查找目標
#>dir1/dir2/dir3/my.file.txtecho ${file##*/} # 刪掉右起第一個/及其左側內容,*號為通配符,/為查找目標
#>my.file.txtecho ${file#*.} # 刪掉左起第一個.及其左側內容,*號為通配符,.為查找目標
#>file.txtecho ${file##*.} # 刪掉右起第一個.及其左側內容,*號為通配符,.為查找目標
#>txtecho ${file%/*} # 刪掉右起第一個/及其右側內容,*號為通配符,/為查找目標
#>/dir1/dir2/dir3echo ${file%%/*} # 刪掉右起第一個/及其左側內容,*號為通配符,/為查找目標
#>(空字符串)echo ${file%.*} # 刪掉左起第一個.及其左側內容,*號為通配符,.為查找目標
#>/dir1/dir2/dir3/my.fileecho ${file%%.*} # 刪掉右起第一個.及其左側內容,*號為通配符,.為查找目標
#>/dir1/dir2/dir3/my
注意:
1.截取右側內容時,使用#或##,且*號必須在匹配字符左側,表示刪除匹配字符和*號匹配內容;
2.截取左側內容時,使用%或%%,且*號必須在匹配字符右側,表示刪除匹配字符和*號匹配內容;
3.匹配內容可以不單單一個字符,可以是一個字符串,如:
echo ${file%%my*} # 刪掉右起第一個my及其左側內容,*號為通配符,my為查找目標
#>/dir1/dir2/dir3/