Я использую оболочку bash в CentOS, версия ...
$ 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
В моем сценарии оболочки я хочу получить часть строки, а именно все, что до последнего тире («-»). Итак, если моя строка - «my-importer-1.0.ear», я хочу извлечь «my-importer». Однако выражение ниже
prefix=${fname%-*}
возвращает только "my", потому что соответствует первому тире. Как мне настроить выражение, чтобы оно соответствовало всему до последнего тире?
Вы уверены, что не используете %%
который удаляет самое длинное совпадение с конца строки и, таким образом, дает вам my
тогда как %
удаляет самое короткое совпадение и предоставляет (например, вам) то, что вы хотите
fname=my-importer-1.0.ear
echo ${fname%%-*}
my
в то время как
echo ${fname%-*}
my-importer