Pular para o conteúdo

Bash: Não use if

Dica publicada em Shell Script / Miscelânea
albert guedes albertguedes
Hits: 23.756 Categoria: Shell Script Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Separar caracteres de uma string no PHP

Placa Wireless Atheros AR5001 - Configuração no Debian Squeeze

Como ver a saída de qualquer comando MySQL no PHP

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

Descubra o ip de links de uma página sem esforço

Aprenda a usar o google, e melhore seu currículo

Wallpaper Slideshow no LXDE

Verificando disco de backup e enviando e-mail

hwclock - Ajustando data e hora do hardware

Recuperando posição do cursor na última linha editada no VIM

#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.