一·简介
提取文件名称或者目录,一般都会使用到#,##,%和%%,但是他们的区别很容易记混淆了。在一下4种方式中,目标匹配字符是不在结果中。
#:表示从左开始算起,并且截取第一个匹配的字符
##:表示从左开始算起,并且截取最后一个匹配的字符
%:表示从右开始算起,并且截取第一个匹配的字符
%%:表示从右开始算起,并且截取最后一个匹配的字符
二·例子
当前有一个文件名称为1_2_3_4.txt,把文件名称赋值给变量var
1.echo "${var#*_}"输出结果为:2_3_4.txt。此时从左开始截取第一个匹配上'_'的字符串,即1和随后的‘_’被截断了;
2.echo "${var##*_}"输出结果为:4.txt。此时从左开始截取最后一个匹配上'_'的字符串,即“1_2_3_”被截断了;
3.echo "${var%_*}"输出结果为:1_2_3。此时从右开始截取第一个匹配上'_'的字符串,即“_4.txt”被截断了;
4.echo "${var%%_*}"输出结果为:1。此时从右开始截取最后一个匹配上‘_’的字符串,即“_2_3_4.txt”被截断了