Alguns recursos do BASH para você utilizar em seus programas

Neste artigo mostrarei alguns recursos úteis para os amantes de shell-script, mas que não querem escrever somente scripts, e sim verdadeiros e complexos programas.

[ Hits: 45.126 ]

Por: Leandro Santiago em 07/02/2008 | Blog: http://leandrosan.wordpress.com


Curiosidades sobre a aritmética do bash



Lembra do meu artigo anterior, onde falei um pouco da aritmética do bash? Se não lembra ou não leu, acesse ele por este link:
Eu havia dito que expressões como ((1<2)) retornam verdadeiro para o shell. A questão é: porque isto acontece?

Acontece que o bash utiliza uma propriedade muito parecida com outras linguagens, como C.

Para perceber qual propriedade estou falando, execute o seguinte comando:

$ echo $((3==3))
1

E outro:

$ echo $((3!=3))
0

O que o bash reconhece como verdadeiro ou falso é se a expressão tem o valor 1 (true) ou 0 (false).

Com isso em mente, você poderia, por exemplo, atribuir o valor de uma expressão lógica à uma variável:

$ ((var=3==3))
$ echo $((var))

1

Também pode formar expressões como esta:

((i=1))
((j=0))
if (( i || j ))
then
echo "i ou j vale um"
fi

O engraçado é que a expressão ((0)) retorna 1 para o bash, enquanto que qualquer outro valor retorna 0. É no mínimo engraçado. Mas tem uma explicação. Nos scripts que normalmente escrevemos, temos várias possibilidades de retorno do comando anterior, mas quando tratamos utilizando lógica booleana, só temos dois valores: true ou false. Verdadeiro ou Falso. 1 ou 0.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Declaração Condicional de Funções
   3. Como criar programas internacionalizáveis
   4. Como criar programas com opções - melhorado
   5. A diferença entre as crases (``) e o '$()'
   6. Curiosidades sobre a aritmética do bash
   7. Conclusão, referências e todo o resto
Outros artigos deste autor

Instalando um ambiente leve e funcional em computadores antigos

Recursos avançados do bash que você não aprende na escola

Brincando com vetores

Brincando com vetores - complemento

Mudando o tema dos cursores do mouse no Linux

Leitura recomendada

Coloque ordem em seus programas

Script de backup full + diferencial + compactador + restauração

Terminal Didático - Shell Script via WEB (PHP + Bootstrap)

Ajustando a hora do micro com extrema precisão

KeepAlive para conexão discada (ou não)

  
Comentários
[1] Comentário enviado por hugoeustaquio em 07/02/2008 - 18:03h

"Eu havia dito que expressões como ((1<2)) retornam verdadeiro para o shell. A questão é: porque isto acontece? "

Isso acontece porque 1 é menor que 2 ;)

Viva o bash!

[2] Comentário enviado por tenchi em 07/02/2008 - 20:00h

Ah hugoeustaquio, não é que você está certo? rsrs
Acabei dizendo tal bobagem para mostrar que algumas operações do bash se assemelham muito às de linguagens como C, onde 1 é verdadeiro e 0, falso. O problema é que muitas pessoas simplesmente desconhecem tais recursos.
Mas valeu pela correção ;-)

[3] Comentário enviado por chimico em 08/02/2008 - 09:53h

Muito bom, parabéns pelo artigo!

[4] Comentário enviado por k4mus em 08/02/2008 - 09:59h

Parabens amigo. A algum tempo q eu procurava algum material como este.

vlw

[5] Comentário enviado por everton3x em 08/02/2008 - 11:57h

Muito bom artigo, não tanto por mostrar como fazer "algumas coisinhas" com Shell Script, mas principalmente por mostrar aos pagãos o quão poderoso é o bash.
Parabéns!

[6] Comentário enviado por juliaojunior em 08/02/2008 - 18:26h

muito bom. Direto para favoritos. :>

[7] Comentário enviado por Teixeira em 09/02/2008 - 22:15h

Gostei muito do artigo.
Eu mesmo tinha outra idéia do assunto, pois achava que a coisa seria muito complicada.
O amigo veio provar o contrário.
Pode ser complexo no início, e exige grande disciplina, mas certamente complicado não é.
( Normalmente é a verbose que assusta um pouco )
Parabéns !

[8] Comentário enviado por elgio em 22/02/2008 - 15:24h

Sobre a arimetica um cuidado deve ser tomado ao escrever os numeros:

$ echo $(( 9 < 011 ))
0


Ué? 9 é menor que 11, então porque a expressão deu FALSO? (valor 0)

Porque números precedidos com ZERO são interpretados como octal pelo BASH e 011 octal = 9 em decimal:

$ echo $(( 9 == 011 ))
1

[9] Comentário enviado por elgio em 22/02/2008 - 15:30h

A propósito: legal este teu artigo.
Cheio de manhas.

[10] Comentário enviado por removido em 28/04/2014 - 18:17h

Didática muito boa, favoritado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts