##和%在shell中意味着什么?

时间:2016-09-08 01:38:57

标签: linux shell unix

我们必须从字符串中获取'filename'和'file extension'

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

以下语法正常。但是,我们想了解“## ”。和'%。'有效

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

任何帮助都会很好

1 个答案:

答案 0 :(得分:0)

您的出发点是阅读bash manual,尤其是Shell Parameter Expansion上的部分。

一些相关的摘录:

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

这个词 被扩展为生成一个模式,就像在文件名中一样 扩展(请参阅文件名扩展)。如果模式匹配 参数扩展值的开头, 然后扩展的结果是参数的扩展值 使用最短的匹配模式('#'情况)或 删除了最长匹配模式('##'case)。 如果参数是'@'或'', 模式移除操作应用于每个位置 依次参数,扩展是结果列表。 如果parameter是一个下标的数组变量 '@'或'', 模式删除操作适用于每个成员 依次是数组,扩展是结果列表。

${parameter%word}
${parameter%%word}

这个词被扩展为产生一个模式 文件名扩展。 如果模式匹配扩展值的尾部 参数,然后扩展的结果是值 具有最短匹配模式的参数('%'情况) 或删除最长匹配模式('%%'个案)。 如果参数是'@'或'', 模式移除操作应用于每个位置 依次参数,扩展是结果列表。 如果参数 下标为'@'或''的数组变量, 模式删除操作适用于每个成员 依次是数组,扩展是结果列表。