Mostrando postagens com marcador shell. Mostrar todas as postagens
Mostrando postagens com marcador shell. Mostrar todas as postagens

terça-feira, 6 de outubro de 2009

dica - scripts shell

Enviado pelo Mateus Teixeira (27/05/2008):

Pra quem gosta de ficar a par das novidades linuxeiras, em especial
sobre o projeto Fedora, vale a pena dar uma olhada neste site:

http://www.projetof edora.org/ Revista
É da revista Fedora Brasil. Além de dar novidades e notícias,
a partir da primeira edição (só há duas) eles começaram um
tutorial sobre scripts shell.
Interessante para quem está começando ou pretende se iniciar
neste ambiente.
Até.

sábado, 26 de setembro de 2009

duvida_shell_while

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é