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: 44.749 ]

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

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

Rodando vídeos .rmvb no Linux

Instalando um ambiente leve e funcional em computadores antigos

Mudando o tema dos cursores do mouse no Linux

Brincando com vetores

Leitura recomendada

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

Incrementando seus scripts com dialog

Criando uma ISO bootável do OpenBSD

Fazendo backup do seu MySQL com API do Dropbox

Multi-head usando udev e Xnest

  
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