bash - bash 变量替换 `##` 中的 `${}` 是什么意思?

标签 bash

<分区>

我正在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 结尾,但我不 知道这里##的意思。谁能帮帮我?

谢谢!

最佳答案

用于变量扩展,${string##sub}string中移除最长的匹配子串sub(# 移除最短的匹配子串。

在您的情况下,是的 - 这将返回文件名中第一个 . 之后的字符串,并提供文件扩展名。

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

关于bash - bash 变量替换 `##` 中的 `${}` 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45234281/

相关文章:

linux - 检查脚本命令中的错误

linux - 从单个时间命令获取两个输出

linux - 文件删除后进程继续保留文件

linux - Sed 错误 "sed: unmatched '/'"

regex - 当正则表达式匹配内容时检索文件名

linux - 为什么我可以在未经用户许可的情况下删除文件?

linux - 在 cat 文件的输出中打印单词 echo

linux - 将循环索引的值(增量)分配给bash中的变量

bash - 附加到 RO 文件系统上通过 ssh 启动的命令的远程环境变量

linux - 在 Kubuntu 设备上执行命令