Bash: Não use if

Publicado por albert guedes em 30/05/2008

[ Hits: 23.049 ]

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

Configurando o X em sistemas Debian ou similares na linha de comando

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

Como gravar partes de um vídeo com o mencoder

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

Imprima textos inteiros com o comando "echo"

Leitura recomendada

Criando um alias (atalho) no bash - Slackware 10.2

Renomeando extensões de centenas de arquivos de uma só vez

Criando texto "hacker" com SED

Formas de Obter as Dimensões do Emulador Terminal

Reparar - Recuperação de sistemas baseados em Debian

  

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