这些不是正则表达式,它们是 Bash 参数扩展的示例:用变量或特殊参数的值替换它。伍利奇维基有一个很好的解释。
基本上,在您的示例中,${0##*/}
翻译为:
对于变量 $0 和模式 '/',两个哈希值的意思是开始的参数,删除最长(或贪婪)匹配 - 直到并包括模式。
那么,其中$0
是文件名,例如 ,$HOME/documents/doc.txt
则参数将扩展为:doc.txt
类似地,对于${0%/*}
,模式/
与结尾参数(%
),删除最短或非贪婪匹配 - 在上面的示例中将为您提供$HOME/documents
。
另请参阅有关的文章Bash 黑客维基。