Bom dia pessoal, estou criando um script que faz a instalação de vários aplicativos para mim. Ele é dividido em funções e cada função baixa da internet o pacote tar.xz e o instala na distribuição. A distro que estou usando é Zorin OS (base Ubuntu) com kernel low-latency.
No que empaquei foi o seguinte, após o download ele faz a verificação de integridade do pacote e eu gostaria que ele tivesse uma condicional que se der errado apaga tudo e recomeça o download e se der certo continua com a instalação. Tentei criar uma subfunção pra isso e fazer ela retornar 0 para sucesso e 1 para fracasso e depois usar uma condicional dentro da função grande dizendo o que fazer para cada retorno, mas eu olhei todos os parâmetros do comando md5sum e nenhum retorna número, só retorna uma string
Nome_do_pacote.tar.xz : SUCESSO!
ou
Qualquer mensagem: FALHOU!
A subfunção que tentei:
pacoteX(){
verificacao(){
MD5=`md5sum -c --ignore-missing --status md5sums`
$MD5
return $MD5
}
if [ verificacao == 0 ] ; then
echo "Verificação sucesso"
else
echo "Verificação falhou"
menu
fi
}
Após muitos testes com parâmetros diferentes eu cheguei a uma solução mais criativa :
pacoteX(){
# Baixou o pacoteX.tar.xz e seu md5sums
MD5=`md5sum -c --ignore-missing --strict md5sums`
pacote=`ls pacote*.tar.xz`
$MD5
if [ "$MD5" == "$pacote: SUCESSO" ] ; then
echo "Verificação concluída!"
else
zenity --info --text="Verificação de integridade falhou, voltando ao menu principal"
menu
fi
# Continua com o resto da instalação
}
Eu sei que está meio complicado essa condicional, aliás levei muito tempo para chegar a esse ponto e mesmo assim isso sempre retorna a minha mensagem de erro com o zenity (mesmo a verificação dando certo fora do script). Então eu gostaria de ver o que programadores mais experientes fariam numa situação dessas se ignoram a condicional e simplesmente verifica (sem complicar as coisas) ou larga mão de verificar os arquivos e só instala de uma vez... Também já tentei um monte de variações desse mesmo código e algumas vezes isso retorna um erro do bash -> Excesso de argumentos.
Agradeço desde já quem puder me ajudar.