Eu gostaria de criar um script bash que baixe um instalador específico da Internet, instale-o, crie um arquivo de desktop que o inicie, inicie automaticamente e remova o instalador, mas há algumas coisas que eu gostaria do script checar. Essas coisas são:
a existência do instalador (se não existir, baixe-o, caso contrário, configure-o como executável)
a existência de uma instalação anterior (se existir, defina o executável do desinstalador, execute-o e remova tudo o que deixou para trás, caso contrário, vá para a próxima etapa)
o estado do pacote gksu via apt list | grep gksu (se estiver instalado, vá para a próxima etapa, caso contrário, instale-o) e
a saída de gksu example.run (se houver uma linha "GNOME_SUDO_PASS", repita gksu example.run, caso contrário, vá para a próxima etapa)
Responder1
Condição: instalador - ls . | grep exemplo.runchmod +x pelda.run senão wget download/link/of/example.run
Pelo que entendi acima, isso se traduz em:
if [ -f example.run ]
then
chmod +x pelda.run
else
wget download/link/of/example.run
fi
[ -f example.run ]
é um exemplo de uso do test
comando. Se um arquivo nomeado example.run
existir, o comando de teste definirá um código de retorno 0 (que significa verdadeiro). Caso contrário, ele define um código de retorno 1 (ou seja, falso).
Condição: gksu - apt list --installed | grep gksu, se! existir, então sudo apt install gksu else gksu pelda.run
Conforme interpreto o acima, isso se traduz em:
if apt list --installed | grep gksu
then
gksu pelda.run
else
sudo apt install gksu
fi
Aqui, estamos usando o fato que grep
define um código de retorno dependendo de encontrar uma correspondência ou não. apt list --installed
retorna uma lista de pacotes instalados. Se sua saída em algum lugar contiver a string gksu
, então grep
definirá um código de retorno 0 (significando verdadeiro) e a then
cláusula será executada. Caso contrário, a else
cláusula é executada.