Script Bash if - else condições

Script Bash if - else condições

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 testcomando. Se um arquivo nomeado example.runexistir, 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 grepdefine um código de retorno dependendo de encontrar uma correspondência ou não. apt list --installedretorna uma lista de pacotes instalados. Se sua saída em algum lugar contiver a string gksu, então grepdefinirá um código de retorno 0 (significando verdadeiro) e a thencláusula será executada. Caso contrário, a elsecláusula é executada.

informação relacionada