任何人都可以帮助我解释为什么使用这种方式获取文件名。 例如:文件是:
fileName = "/Users/test/am01/output/output.log"
fileName=${fileName##*/}
然后我们得到了
fileName = output.log
你们能帮我解释一下 ##* 是什么意思吗,我对这个正则表达式很困惑。
另外,还有一个这样的例子:
filename="testdata.done"
echo ${filename%.done}
then we got test data
%是什么意思,我没见过这个正则表达式。
最佳答案
这不是 reqexp,它是普通的旧 bash 魔法。 这guide说:
${string##substring}
从 $string 前面删除 $substring 的最长匹配项。
这里的星号是通配符,所以*/
的意思是,删除以/
结尾的最长子串。
即"/Users/test/am01/output/"
在你的情况下。
问题的 b 部分:
${string%substring}
从 $string 的后面删除 $substring 的最短匹配。
关于regex - 解释用于获取文件名的 linux 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17286795/