gpt4 book ai didi

linux - shell中的##和%是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 05:50:36 25 4
gpt4 key购买 nike

我们必须从字符串中获取“文件名”和“文件扩展名”

[sathish@oc Desktop]$ export FILE="filename.txt"

以下语法工作正常。然而,我们想了解 '##.' 是如何实现的。和 '%.' 有效

[sathish@oc Desktop]$ echo ${FILE##*.}
txt
[sathish@oc Desktop]$ echo ${FILE%.*}
filename

任何帮助都会很好

最佳答案

您的起点是阅读 bash manual ,特别是关于 Shell Parameter Expansion 的部分.

一些相关摘录:

${parameter#word}
${parameter##word}

这个词被扩展以产生一个模式,就像文件名中一样扩展(请参阅文件名扩展)。如果模式匹配参数扩展值的开始,那么展开的结果就是参数展开后的值使用最短的匹配模式(“#”大小写)或最长匹配模式(“##”大小写)已删除。如果参数是“@”或“”,图案去除操作应用于每个位置依次参数,展开就是结果列表。如果参数是下标为的数组变量‘@’或‘’,模式移除操作应用于每个成员依次数组,扩展就是结果列表。

${参数%word}
${参数%%word}

该单词被扩展以产生一个模式,就像文件名扩展。如果模式与扩展值的尾部部分匹配参数,那么展开的结果就是具有最短匹配模式的参数(‘%’的情况)或删除最长的匹配模式(‘%%’大小写)。如果参数是“@”或“”,图案去除操作应用于每个位置依次参数,展开就是结果列表。如果参数是一个数组变量,下标为“@”或“”,模式移除操作应用于每个成员依次数组,扩展就是结果列表。

关于linux - shell中的##和%是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39381344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com