Você pode usar apenas sort
para isso. Aqui está um exemplo:
getLatestTomcat() {
apt-cache search 'tomcat[0-9]+$' | awk '{ print $1 }' | sort --version-sort | tail -n 1
}
tomcat_package=$(getLatestTomcat)
Eu não estou procurando por alguns lançamentos noturnos, eu só quero a versão mais alta do software disponível no banco de dados do apt. Embora iniciante, consegui apenas uma lista de instalações básicas do tomcat:
XXXXX@debianvirtualbox:~/$ aptitude search tomcat[0-9]+$ p tomcat7 - Servlet and JSP engine i tomcat8 - Apache Tomcat 8 - Servlet and JSP engine
O mesmo pode ser feito para outros programas também, mas eu não encontrei nenhum outro que hospede 2 versões diferentes com o mesmo nome. Presumo que um dia tomcat0
irá aparecer e prefiro não editar o meu instalador apenas para garantir que somos a última versão.
Então, existe uma maneira de estender meu comando de tal forma que ele seja mais alto se tomcat[0-9]+
combinar quais serão usados para apt-get install
, como este?
TOMCAT=getLatestTomcat; # I need your help with this line
read -p "Tomcat server is missing. Install $TOMCAT server automatically?" -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "Ok, installing.";
apt-get install $TOMCAT
else
echo "Ok, do it yourself..."
exit 404;
fi;
Seria ótimo se a resposta fosse mais genérica, pois pode ser mais útil em outras aplicações do que o script que estou fazendo.