Como combinar o número da versão da saída

1

Com a seguinte chamada yum info , podemos capturar a versão instalada de ambari-metrics-monitor

 yum info ambari-metrics-monitor| grep -i version |head -1
 Version     : 2.6.1.0

e para verificar a saída, a versão é, 2.6.1.0 , simplesmente:

 yum info ambari-metrics-monitor| grep -i version |head -1 |  grep "2.6.1.0"

Meu sentimento é que desta forma não é o caminho certo para coincidir com o número flutuante da versão.

Então, qual é a maneira correta de combinar o número flutuante da versão da saída (de acordo com o meu exemplo)?

    
por yael 20.02.2018 / 22:59

4 respostas

2
package=ambari-metrics-monitor
required_version=2.6.1.0
current_version="$( yum info $package | awk -F: '/Version/ {print $2}' )"

if [[ "$current_version" == "$required_version" ]]; then
    echo "Good to go"
else
    echo "Version mismatch - version $current_version is installed for $package"
fi
    
por 20.02.2018 / 23:08
1

Com o comando único awk :

yum info ambari-metrics-monitor \
| awk -v ver="2.6.1.0" '$1 ~ /[vV]ersion$/ && $3 == ver{ f=1; exit }
                        END{ printf "Version %smatched\n", (f? "" : "not ") }'

A saída será Version matched ou Version not matched

    
por 20.02.2018 / 23:12
1

Se o pacote já estiver instalado, você poderá usar o argumento --queryformat de rpm para imprimir apenas o número da versão e usar os argumentos -F e -x de grep para fazer um cálculo exato correspondência:

rpm -q --queryformat %{VERSION} ambari-metrics-monitor \
| grep -qFx 2.6.10 && echo "version matched"
    
por 20.02.2018 / 23:21
0

Com apenas awk você poderia fazer algo como:

yum info ambari-metrics-monitor \
| awk -F: '/Version/{ if ($2 == " 2.6.1.0") {print "yes"} else exit 1}'

Nota no meu yum há espaço em branco antes do número da versão, então eu tive que adicioná-lo à string de verificação para corresponder.

Isto irá imprimir yes (e sair 0) se corresponder ou sair com 1 se não for

    
por 20.02.2018 / 23:11