less $(find . -name myfile.txt)
less `find . -name myfile.txt`
Первый вариант, как мне кажется, соответствует POSIX и может быть вложен. Второй, как мне кажется, более переносимый.
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
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 matched
oVersion not matched
Con solo awk
podrí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 yum
hay 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
Si el paquete ya está instalado, puede usar el argumento --queryformat
de rpm
para imprimir solo el número de versión, y luego usar los argumentos -F
y -x
de grep
para hacer convenientemente una partido:
rpm -q --queryformat %{VERSION} ambari-metrics-monitor \
| grep -qFx 2.6.10 && echo "version matched"