我们必须从字符串中获取'filename'和'file extension'
[sathish@oc Desktop]$ export FILE="filename.txt"
以下语法正常。但是,我们想了解“## ”。和'%。'有效
[sathish@oc Desktop]$ echo ${FILE##*.}
txt
[sathish@oc Desktop]$ echo ${FILE%.*}
filename
任何帮助都会很好
答案 0 :(得分:0)
您的出发点是阅读bash manual,尤其是Shell Parameter Expansion上的部分。
一些相关的摘录:
${parameter#word}
${parameter##word}
这个词 被扩展为生成一个模式,就像在文件名中一样 扩展(请参阅文件名扩展)。如果模式匹配 参数扩展值的开头, 然后扩展的结果是参数的扩展值 使用最短的匹配模式('#'情况)或 删除了最长匹配模式('##'case)。 如果参数是'@'或'', 模式移除操作应用于每个位置 依次参数,扩展是结果列表。 如果parameter是一个下标的数组变量 '@'或'', 模式删除操作适用于每个成员 依次是数组,扩展是结果列表。
${parameter%word}
${parameter%%word}
这个词被扩展为产生一个模式 文件名扩展。 如果模式匹配扩展值的尾部 参数,然后扩展的结果是值 具有最短匹配模式的参数('%'情况) 或删除最长匹配模式('%%'个案)。 如果参数是'@'或'', 模式移除操作应用于每个位置 依次参数,扩展是结果列表。 如果参数 下标为'@'或''的数组变量, 模式删除操作适用于每个成员 依次是数组,扩展是结果列表。