shell切分字符串

利用%截取文件名

借助%操作符可以轻松将名称部分从”名称.扩展名”这种格式中提取出来

file_jpg='2222.jpg'
file_name=${file_jpg%.*}
echo $file_name
#输出 2222

提取扩展名

file_jpg='2222.jpg'
file_name=${file_jpg#*.}
echo $file_name
#输出 jpg

贪婪与非贪婪模式

%属于非贪婪操作,他从右到左找出匹配通配符的最短结果,还有另一个操作符%%,他的行为是贪婪模式,这意味着他会匹配符合条件的最长字符串

file_jpg='2222.class.php.jpg'
file_name=${file_jpg%.*}
echo $file_name
#输出 2222.class.php

而使用贪婪模式

file_jpg='2222.class.php.jpg'
file_name=${file_jpg%%.*}
echo $file_name
#输出 2222

#和##也类似,一个是#是非贪婪模式,##是贪婪模式

file_jpg='2222.class.php.jpg'
file_name=${file_jpg#*.}
echo $file_name
#输出 class.php.jpg
file_jpg='2222.class.php.jpg'
file_name=${file_jpg##*.}
echo $file_name
#输出 jpg