Salve! O problema é que ele rodou na seqüência os dois testes. No primeiro ele seta o IFS para :
O resto já ficou na cara, né? Abraço! -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP 2008/9/25 Julio C. Neves <[EMAIL PROTECTED]> > 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 <[EMAIL PROTECTED]> > > > 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] > > > ------------------------------------ > > --------------------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > --------------------------------------------------------------------- > Sair da lista: [EMAIL PROTECTED] > --------------------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > --------------------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > [As partes desta mensagem que não continham texto foram removidas]