${0##*/} 是什么意思呢?
我们做一个实验就知道了
新建一个目录——mkdir -p /usr/school/grade/class/
新建一个文件——touch /usr/school/grade/class/student
在student文件里写上代码并保存——
echo $0
echo ${0#/}
echo ${0##/}
运行代码—— sh /usr/school/grade/class/student
我们会得到三个结果分别是
/usr/school/grade/class/student
usr/school/grade/class/student
student
这个时候再来讲解那三条指令
$0,$1, 2 反 正 前 面 有 一 个 2 反正前面有一个 2反正前面有一个美元符号的,都象征着变量,而$0象征本身shell脚本文件的名字,也就是 /usr/school/grade/class/student
最右边的 / ,象征着你要寻找,你要匹配的东西,在哪里找呢?在文件名字 /usr/school/grade/class/student 里面找
#象征要寻找最左边的/
##象征要寻找最右边的/
而*是通配符,象征着任意长度的字符串
所以在##条件下的 */ , 就象征着/usr/school/grade/class/这一段
找到了这一段之后,就把它截取,扔掉,剩下的就是student这个文件名字
所以 ${0##*/} 的作用是寻找一个路径下的具体文件名字
/usr/school/grade/class/student,就得到 student