4-1-提取文件名(去除后缀)
TXT=s.txt
f1=`echo ${TXT%.*}`
f=`echo ${f1##*/}`
解释:
${var##*/}
该命令的作用是去掉变量var从左边算起的最后一个’/’字符及其左边的内容,返回从左边算起的最后一个’/’(不含该字符)的右边的内容。使用例子及结果如下:
~$ var=/dir1/dir2/file.txt
~$ echo ${var##*/}
file.txt
${var%.*}
该命令的使用是去掉变量var从右边算起的第一个’.’字符及其右边的内容,返回从右边算起的最后一个’.’(不含该字符)的左边的内容。使用例子及结果如下:
~$ var=/dir1/dir2/file.txt
~$ echo ${var%.*}
/dir1/dir2/file
总结:
其实${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的’/’或’.’。也就是说,上面的使用方法只是它使用的一个特例。
看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。
- #:表示从左边算起第一个
- %:表示从右边算起第一个
- ##:表示从左边算起最后一个
- %%:表示从右边算起最后一个