Expressão de script para obter parte de uma string?

1

Estou usando o shell bash no CentOS, versão ...

$ 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

No meu shell script, quero obter parte de uma string, especificamente, tudo antes do último traço ("-"). Portanto, se minha string for "my-importer-1.0.ear", quero extrair "my-importer". No entanto, a expressão abaixo

prefix=${fname%-*}

está retornando apenas "my", porque corresponde ao primeiro traço. Como posso ajustar a expressão para corresponder a tudo até o último traço?

    
por Dave 01.11.2012 / 20:19

1 resposta

1

Tem a certeza de que não está a utilizar o %% , que elimina a correspondência mais longa do final da cadeia e lhe oferece my , enquanto % elimina a correspondência mais curta e fornece (por exemplo) o que quer

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

enquanto

echo ${fname%-*}
my-importer
    
por 01.11.2012 / 20:34