我正在学习http://www.tldp.org/LDP/abs/html/index.html上的bash脚本材料,并停留在示例7-7中:
http://tldp.org/LDP/abs/html/comparison-ops.html#EX14
有一个${filename##*.} != "gz"
,这可能意味着$filename
没有以.gz
结尾,但我在这里不知道##
的含义。有人能帮我吗?
谢谢!
发布于 2017-07-21 09:40:20
在变量展开中使用的${string##sub}
从string
中删除最长的匹配子字符串sub
(相比之下,#
删除最短匹配的子字符串)。
在您的例子中,是的-这将返回字符串后的第一个.
从文件名,给出文件扩展名。
如果您在##
文档中搜索这,您将找到一个解释(以及其他类似的命令)。
发布于 2017-07-21 09:43:26
在文件名的上下文中,试图在变量文件名中找到扩展名。
filename="*.log"
echo ${filename##*.}
log
我们将在“*”之后实现字符串文件名的部分。
发布于 2017-07-21 09:47:45
##
用于从变量中删除子字符串。有关更多信息,请查看这页面。
就像。如果是filename=/home/user.name/folder.1/test.gz
,则${filename##*.}将为您提供gz
输出。
https://stackoverflow.com/questions/45234281
复制相似问题