Emails enviados em 27 e 28/01/2009:
André Nunes escreveu:
Verminose usuaria do linux,
Olhem o simples loop abaixo e me digam onde estah acaca:
************ ********* ***
xx=0
while ["$xx" -le 4]
do
echo "$xx\c"
xx= `expr $xx + 1`
done
echo
************ ********* **
O erro eh:
./teste.sh: line 2: [0: command not found
Gracias.
Mateus Teixeira escreveu:
Aí cabeça,
Testa esta versão do teu script:
************ ********* *******
#!/bin/bash
xx=0
while [ $xx -le 4 ]
do
echo xx $xx # o mesmo que echo "xx $xx"
let xx+=1 # o mesmo que let xx=xx+1
done
************ ********* *******
Tche, a condição para o teu WHILE deve conter espaço entre os colchetes que a cercam e a variável não precisa ficar entre aspas. Tu a colocas entre aspas quando queres imprimir o seu conteúdo juntamente com um texto qualquer. Vê que neste exemplo nem usei aspas. Com aspas duplas tens o mesmo resultado, mas com aspas simples (o.s., echo 'xx $xx') terás o texto entre elas impresso na tela. A variável não será substituída pelo seu valor.
Pelo que entendi, querias imprimir o valor do teu contador. Quando adicionei os espaços no WHILE e executei o programa, o bicho ficou rodando sem parar. Aí mudei um pouco para fazer o que querias.
O comando LET faz operações aritméticas. Como o próprio manual do BASH fala, é uma versão menos complexa do comando EXPR.
Buenas, acho que era isso!
Hasta,
André Nunes escreveu:
Grande Zeh, gracias.
Este exemplo que pus eh praticamente o mesmo do livro que tenho.
Resolvi fazer um exemplo simples porque era exatamente por
causa de um while que um script nao queria funcionar.
No script que mandei, a falta dos espacos dentro do colchetes
foi esquecimento mesmo, mas a forma como usaste o "let" eu
nunca faria. Eu jah tinha usado o "let" na forma "tradicional"(ex: let x=x+1),
mas nao funcionava.
Bom, jah que ajoelhaste: eh mesmo necessario por o "#!/bin/bash", ou
eh soh pra avisar o tipo de shell que serah executado? Eu suspeito que meu linux executa o Bourne por default, pois nunca inseriesta linha.
Ateh.
Mateus Teixeira escreveu:
Tche,
Se tu usas o Bash por padrão, então não precisas colocar, mas pensas sobre
a possibilidade de rodares este script em outra máquina que não usa o Bash como padrão. Vai dar pau. Pra evitar isso, é melhor colocar o Shel que usarás com o teu script.
Qq coisa é só gritar!
Até
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário