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