Bash: Não use if

Publicado por albert guedes em 30/05/2008

[ Hits: 23.053 ]

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

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

Resolvendo problema de conexão do Skype Beta no Debian

Função em PHP que mostra o número da semana no ano

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

Ajude o Pidgin a ser o melhor messenger do mundo

Leitura recomendada

"Bleeding Edge" para o seu Ubuntu 32 bits

Verificando disco de backup e enviando e-mail

Caracteres Gráficos no Emulador de Dos

Norton Ghost - backup de partições rápido

Aumento de produtividade na programação shell

  

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