脚本表达式获取字符串的一部分?

脚本表达式获取字符串的一部分?

我在 CentOS 中使用 bash shell,版本...

$ uname -a
Linux mydomain.com 3.2.29-48.63.amzn1.x86_64 #1 SMP Sat Sep 15 01:43:12 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

在我的 shell 脚本中,我想获取字符串的一部分,具体来说,是最后一个破折号(“-”)之前的所有内容。因此,如果我的字符串是“my-importer-1.0.ear”,我想提取“my-importer”。但是,下面的表达式

prefix=${fname%-*}

只返回“my”,因为它与第一个破折号匹配。我该如何调整表达式以匹配直到最后一个破折号的所有内容?

答案1

你确定你没有使用%%哪个从字符串末尾删除最长的匹配项,从而为你提供my,而%删除最短的匹配项并提供(例如)你想要的

fname=my-importer-1.0.ear
echo ${fname%%-*}
my

然而

echo ${fname%-*}
my-importer

相关内容