我在 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