shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Dúvida no while?


From: Julio C. Neves
Subject: Re: [shell-script] Dúvida no while?
Date: Thu, 27 Feb 2014 22:29:47 -0300

Até onde eu saiba essa sua primeira está errada. Veja:
$ while ( $c < 10 )
> do
> echo $c
> c=$[c+1]
> done
bash: 10: Arquivo ou diretório não encontrado

Acho que vc queria usar o interpretador aritmético do Bash, mas para isso vc precisa de uma sintaxe do tipo: (( EXPR ARITM )). Veja o mesmo exemplo correto:

$ while ((c < 10))
> do
> echo $c
> c=$[c+1]
> done
1                                                                       
2                                                                       
3                                                                       
4                                                                       
5                                                                       
6                                                                       
7
8
9

Repare que nem é necessário usar um $ antes da variável. Por só trabalhar com números, se for alfa ele deduz que é uma variável. Se a variável não existir, ela será criada com zero. Experimente:

$ unset c             # A variável morreu e foi enterrada
$ while ((++c < 10))  # Pré incrementação junto com teste, ganhando tempo
> do
> echo $c
> done
1
2
3
4
5
6
7
8
9

Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

Rio de Janeiro

EDX

10-14/03

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 



2014-02-27 17:42 GMT-03:00 alexandre lotus <address@hidden>:
 

Alguém sabe me explicar porque quando faço
1) c=1
while ( $c < 10 )
do
echo $c
c=$[c+1]
done

dá certo e quando faço

2) c=1
while [ $c < 10 ] eu sei que pe assim [ $c -lt 10 ]
do
echo $c
c=$[c+1]
done

Alguem sabe me explicar porque o primeiro caso dá certo e se é correto fazer assim?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]