有些脚本要根据文件名进行各种处理,有时候需要保留文件名抛弃文件后缀,也有时候需要文件后缀不要文件名,这类提取文件部分的操作使用shell的内建功能就能实现。需要用到的几个操作符有:%、%%、#、##.
从右向左匹配 :% 和 %% 操作符的示例
#!/bin/bash
#提取文件名,删除后缀。
file_name=“text.gif”
name=${file_name%.*}
echo file name is: $name
输出结果:
file name is: test
# ${VAR%.* }含义:从$VAR中删除位于 % 右侧的通配符左右匹配的字符串,通配符从右向左进行匹配。现在给变量 name 赋值,name=text.gif,那么通配符从右向左就会匹配到 .gif,所有从 $VAR 中删除匹配结果。
# % 属于非贪婪操作符,他是从左右向左匹配最短结果;%% 属于贪婪操作符,会从右向左匹配符合条件的最长字符串。
输出结果:
file name is: test.gif.bak //使用 %
file name is: test //使用 %%
操作符 %% 使用 .* 从右向左贪婪匹配到 .gif.bak.2012
从左向右匹配:# 和 ## 操作符示例
参考文献
http://man.linuxde.net/shell-script/shell-7