Aqui está uma versão mais simples do seu script, (mantendo o humor intacto :)):
#!/bin/bash
## The && means that the script will run the next command only if this one
## succeeds, in other words, only if the string 'version 1.0' is found.
bleachbit --version | grep -q 'version 1.0' &&
echo "$(tput setaf 2)The elves have verified the BleachBit version.$(tput sgr0)" &&
exit 0
## This block will only be executed if the grep above failed
wget -P ~/Downloads http://katana.oooninja.com/bleachbit/sf/bleachbit_1.0_all_ubuntu1204.deb &&
sudo dpkg -i ~/Downloads/bleachbit_1.0_all_ubuntu1204.deb &&
echo "$(tput setaf 2)The elves have installed BleachBit 1.0.$(tput sgr0)"
Observe que eu adicionei &&
ao final de cada comando, assim, você evitará erros se algum dos comandos falhar, pois o script sairá no primeiro comando com falha.
Uma abordagem mais segura seria alterar o primeiro comando para:
bleachbit --version | awk '/version/{if($NF>=1){exit 0}else{exit 1}}'
Isso tem a vantagem de funcionar bem para versões futuras, quando o número da versão for maior que 1
. O $NF
em awk
significa o último campo e /version/
significa que o script será executado em linhas correspondentes a version
. Então, como a primeira linha é:
info: starting BleachBit version 1.0
awk
testará se o último campo ( 1.0
) aqui é maior ou igual a um e sairá com um 0
status (sucesso), se for o que significa que o próximo bloco ( &&
) será executado e seu script será interrompido.
Você também pode condensar tudo para:
bleachbit --version | head -n 1 | awk '{if($NF>=1){exit 1}else{exit 0}}' &&
wget -P ~/Downloads http://katana.oooninja.com/bleachbit/sf/bleachbit_1.0_all_ubuntu1204.deb &&
sudo dpkg -i ~/Downloads/bleachbit_1.0_all_ubuntu1204
Mas isso vem às custas dos pobres elfos.