Pular para o conteúdo

Bash: Não use if

Dica publicada em Shell Script / Miscelânea
albert guedes albertguedes
Hits: 23.759 Categoria: Shell Script Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar

Bash: Não use if

Num script de shell às vezes o usuário usa o controle if na forma:

if <teste>
then
  <comando>
fi

Mas saiba que existe um modo mais "elegante" de se fazer um controle tipo if. Esse método é o método dos colchetes "[]":

[ <teste> ] && <comando>

Onde se o <teste> for verdadeiro, o comando <comando> é executado.

Outro modo é:

[ <teste> ] || <comando>

Onde se o teste for verdadeiro, o comando NÃO é executado.

Explicando: '[]' retorna verdadeiro ou falso dependendo do teste, e os operadores lógicos '&&' e '||' é que permitem ou não a execução dos comandos, como mostrado acima.

Em vez de um só comando, podemos ter uma série de comandos, para isso é só usar as chaves "{}":

[ <teste> ] && {
   <comando 1>
   <comando 1>
   ...
   <comando N>
}

Todos estes modos de controle dão o mesmo resultado que o if, mas na hora de ler um código, eles facilitam muito a leitura.

Então o uso fica ao cargo do gosto estético de cada um.

Ache vídeos do youtube facilmente

Separar palavras de uma string no PHP

Resolvendo problema de atualização do Eclipse no Debian Squeeze

[RESOLVIDO] Magento: Não consigo fazer login de administrador após instalação

ob_start() - capturar páginas na web ou geradas na hora usando PHP e enviá-las por email

Todos os logs com o multitail

Montando partição Windows automaticamente

Trocando letrinhas em segundos (sed)

LibreOffice - Acessando arquivos recentes pelo Unity Launcher

Script para avisar compromissos

#1 Comentário enviado por bpedrassani em 30/05/2008 - 11:59h
Cara, concordo que é questão de estética, e muitas vezes é até melhor não usar o if, mas o uso de colchetes não é mais elegante que o if. A organização, identação, e facilidade de leitura são muito maiores.

Mas eu gosto de usar os colchetes em algumas partes do código também.
#2 Comentário enviado por albertguedes em 30/05/2008 - 12:08h
Bom, eu uso colchetes adoidado, só uso 'if' quando preciso do 'else', isso uando não uso o 'case'. hehehe
Mas a intensão foi mais de apresentar os colchetes aos novatos em bash, eu mesmo levei um bom tempo até conhecer essa regalia.
#3 Comentário enviado por tenchi em 30/05/2008 - 14:02h
Legal a dica, mas eu ainda gosto do meu bom e velho if ;-)
Uso bastante esta construção de colchetes quando preciso fazer algo direto na linha de comando, pois acho que num script esta construção só atrapalha a visibilidade do código. Mas, como você mesmo disse, é uma questão de opção ;-)
#4 Comentário enviado por GilsonDeElt em 30/05/2008 - 15:45h
Valeu, cara!

Eu não sabia dessa!
Gostei da dica!

mas acho que ler o "if" é mais fácil,
pelo menos para iniciantes que nem eu

mas com os colchetes, realmente o código fica mais limpo

flw!
#5 Comentário enviado por fco em 30/05/2008 - 18:34h
Queria colocar um comentário OFF-TOPIC aqui, com meus pedidos de desculpas ao albertguedes:

tenchi de volta ao VOL!!! (Mesmo que num simples comentário) Legal! Tava fazendo falta.
#6 Comentário enviado por iamunhoz em 30/05/2008 - 20:50h
Muito bom, gostei. Eu também sou beeem iniciante em scripts, mas achei legal a dica. Os colchetes pódem ser mais ou menos organizados que o if, só depende do método de raciocínio que usamos.
#7 Comentário enviado por foguinho.peruca em 30/05/2008 - 23:30h
boa dica!

Não conhecia essa... é interessante saber....

Em relação ao código elegante e mais legível, discordo. Prefiro o if pois eu já estou mais acostumado devido à experiencia com outras linguagens e particularmente eu acho muito mais claro mesmo.

Mas é isso...
[]'s
Jeff
#8 Comentário enviado por ricardogorayeb em 31/05/2008 - 09:32h
Os colchetes "[ ]" substituem a função "test" que tem o seu funcionamento similar ao "if".

Mas boa dica ....

[]'s

Ricardo Gorayeb
#9 Comentário enviado por removido em 25/02/2011 - 00:09h
lembrando que os colchetes "[[" e "]]" testam strings, tipo:

[[ "$VAR" = "value" ]] && echo "deu certo" || echo "Deu errado".

aqui fiz um if / else, para quem não entendeu (novatos, ok?)

eu uso os dois jeitos, estou aprendendo perl, assim com colchetes fica mais perl-like.

Contribuir com comentário

Entre na sua conta para comentar.