Bash: Não use if

Publicado por albert guedes em 30/05/2008

[ Hits: 22.885 ]

Blog: https://teko.net.br

 


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.

Outras dicas deste autor

Comando "locate" sumido no SuSE Linux

Mostrar as tabelas de um banco de dados no PostgreSQL usando PHP

Resolvendo problema de conexão do Skype Beta no Debian

Mudando a fonte padrão dos seus documentos em LaTeX

Magento - " Please enter a valid URL. Protocol is required (http://, https:// or ftp://) "

Leitura recomendada

Showterm: screencast pelo terminal

Comunicação entre aplicativos com o qdbus no KDE 4

Montando partição Windows automaticamente

Como realizar consultas em vários servidores simultaneamente

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

  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts