#
用于删除左起第一个匹配内容,即截取右侧内容
##
用于删除右起第一个匹配内容,即截取右侧内容
%
用于删除右起第一个匹配内容,即截取左侧内容
%%
用于删除左起第一个匹配内容,即截取左侧内容
举例
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/