
JoseRenan
(usa Ubuntu)
Enviado em 07/08/2017 - 14:16h
Roknauta escreveu:
No meu cenário eu possuo:
version="`mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version -o | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }'`"
versionP="${version%.*}"
parteF="${version##*.}"
No código acima eu leio um arquivo pom.xml e extraio o número da sua versão na variável
version
a saber o valor é: 1.7.63-SNAPSHOT.
Nas 2 variáveis debaixo eu gostaria de saber o que representa o
%.*
e o
##*.
que estão concatenados na variável version. Eu tentei pesquisar o significado mas não achei.
Executando do terminal:
version="1.7.63-SNAPSHOT"
versionP="${version%.*}"
parteF="${version##*.}"
echo $version
echo $versionP
echo $parteF
Saída:
1.7.63-SNAPSHOT
1.7
63-SNAPSHOT
Explicação:
versionP="${version%.*}" => Corresponde a ${sua_variavel%padrão_a_ser_encontrado}
Funciona de trás para frente, por ter somente um %, ao primeiro ponto que achar exibirá o que tiver à frente, por causa do "*". Se fosse "${version%%.*}" a variável seria percorrida até o último ponto q encontrar, no caso exibiria somente 1.
parteF="${version##*.}"=> Corresponde a ${sua_variavel##padrão_a_ser_encontrado}
Percorre da esquerda para a direita a variável, exibe tudo que tiver após o último ponto que encontrar. "${version#*.}" exibiria tudo que tiver após o primeiro ponto entrado, no caso 7.63-SNAPSHOT.
Fonte:
http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/parameter-substitution.html