Answers:
这些不是正则表达式,它们是Bash参数扩展的示例:用其值替换变量或特殊参数。Wooledge Wiki有一个很好的解释。
基本上,在您的示例中,${0##*/}翻译为:
对于变量$ 0和模式'/',这两个哈希值从参数的开头开始,删除最长(或贪婪)匹配项,直到模式为止。
因此,$0文件名在哪里,例如$HOME/documents/doc.txt,则该参数将扩展为:doc.txt
同样,对于${0%/*},模式/与参数(the )的末尾进行%匹配,其中删除了最短或非贪婪的匹配–在上面的示例中这将为您提供$HOME/documents。
另请参阅Bash Hacker's Wiki上的文章。
*)表示将删除所有包括模式在内的所有内容。因此,对于参数的开头#,,它在左侧,而在结尾处,%从右开始。
sh。
basename和dirname吗?:D