Как сопоставить номер версии с выходными данными

less $(find . -name myfile.txt)

less `find . -name myfile.txt`

Первый вариант, как мне кажется, соответствует POSIX и может быть вложен. Второй, как мне кажется, более переносимый.

1
02.03.2018, 14:48
4 ответа
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
2
28.04.2021, 23:50

Con comando simpleawk:

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 ") }'

La salida será Version matchedoVersion not matched

1
28.04.2021, 23:50

Con solo awkpodrías hacer algo como:

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

Tenga en cuenta que en mi yumhay un espacio en blanco antes del número de versión, por lo que tuve que agregarlo a la cadena de verificación para que coincida.

Esto imprimiráyes(y saldrá 0 )si coincide o saldrá con 1 si no coincide

0
28.04.2021, 23:50

Si el paquete ya está instalado, puede usar el argumento --queryformatde rpmpara imprimir solo el número de versión, y luego usar los argumentos -Fy -xde greppara hacer convenientemente una partido:

rpm -q --queryformat %{VERSION} ambari-metrics-monitor \
| grep -qFx 2.6.10 && echo "version matched"
1
28.04.2021, 23:50

Теги

Похожие вопросы