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.
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.
[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 ;-)
[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!
[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 !