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

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

Re: [shell-script] Direcionar saida de comandos para o read


From: Julio C. Neves
Subject: Re: [shell-script] Direcionar saida de comandos para o read
Date: Thu, 25 Sep 2008 14:12:09 -0300

Fala Klaus,
no primeiro exemplo, já te expliquei no e-mail anterior que aquela sintaxe
só é aceita em Unix, no segundo caso, deve haver algo errado, pois não
consegui reproduzir o seu resultado. Veja:

$ while read Linha
> do
>     prim=$(echo "$Linha" | cut -f1 -d" ")
>     seg=$(echo "$Linha" | cut -f2 -d" ")
>     terc=$(echo "$Linha" | cut -f1 -d" ")
>     echo "$prim"
> done < arq
12345
12575
15488

Abraços,
Julio



2008/9/24 Klaus Jurgen Friedrich <address@hidden>

>   Estou aprendendo shell script e encontrei com um problema de um exemplo
> do
>  livro Programação Shell Linux.
>
> Fiz algumas simplificaçoes nos exemplos.
> Vejam:
>
> $ grep klaus /etc/passwd
> klaus:x:1000:1000:klaus:/home/kurumin:/bin/bash
>
> $ IFS=:                 # tranformei a variavel $IFS em dois pontos.
>
> Ate aqui tudo bem, vejam agora:
> # Joguei a saida do comando grep para o read armazenar nas variaveis:
> #  $a $b $c $d $e $f  $g
>
> $ grep klaus /etc/passwd | read a b c d e f g
>
> # Nao criou a variavel $a
> $ echo $a
>
> # Nao criou nenhuma variavel, vejam.
> $ echo -e "$a\n$b\n$c\n$d\n$e\n$f\n$g"
>
> Fiz outro teste de um exemplo do livro, "O exemplo foi modificado por
> motivo de simplificação.
>
> cat arquivo
> 12345 1254 1235
> 12575 4788 1547
> 15488 9857 5289
>
> # direcionar o arquivo do final do script para o comando while.
>
> $ cat teste   # Conteudo do arquivo "teste"
> while read Linha
> do
>     prim=$(echo "$Linha" | cut -f1 -d" ")
>     seg=$(echo "$Linha" | cut -f2 -d" ")
>     terc=$(echo "$Linha" | cut -f1 -d" ")
>     echo "$prim"
> done < arquivo
>
> # Executei o script e fiquei espantado
> $ ./teste
> 12345 1254 1235
> 12575 4788 1547
> 15488 9857 5289
>
> O grande problema eh que eu dei a instrucao ao script para mostrar  somente
> a primeira variavel "$prim" na tela e somente armazenar a segunda variavel
> $seg
> e a terceira na variavel na variavel $tec
> A primeira variavel $prim deveria ter somente o primeiro campo, a segunda
> variavel somente o segundo campo e a terceira o teiceiro campo.
> Por que aconteceu isso?
>
> Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua
> cara @ymail.com ou @rocketmail.com.
> http://br.new.mail.yahoo.com/addresses
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Abraços,
Julio
Em setembro estarei dando um treinamento
Shell em São Paulo (em 2 fins de semana).
Mais informações: www.4linux.com.br
Tel: (11) 2125-4747


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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