首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在bash变量替换`${}‘中,`##`是什么意思?

在bash变量替换`${}‘中,`##`是什么意思?
EN

Stack Overflow用户
提问于 2017-07-21 09:39:07
回答 3查看 489关注 0票数 3

我正在学习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结尾,但我在这里不知道##的含义。有人能帮我吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-21 09:40:20

在变量展开中使用的${string##sub}string中删除最长的匹配子字符串sub (相比之下,#删除最短匹配的子字符串)。

在您的例子中,是的-这将返回字符串后的第一个.从文件名,给出文件扩展名。

如果您在##文档中搜索,您将找到一个解释(以及其他类似的命令)。

票数 4
EN

Stack Overflow用户

发布于 2017-07-21 09:43:26

在文件名的上下文中,试图在变量文件名中找到扩展名。

代码语言:javascript
运行
复制
filename="*.log"
echo ${filename##*.}
log

我们将在“*”之后实现字符串文件名的部分。

票数 1
EN

Stack Overflow用户

发布于 2017-07-21 09:47:45

##用于从变量中删除子字符串。有关更多信息,请查看页面。

就像。如果是filename=/home/user.name/folder.1/test.gz,则${filename##*.}将为您提供gz输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45234281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档