Dúvida

1. Dúvida

Rodrigo Wanderson
rodrigowanderson

(usa Debian)

Enviado em 12/02/2015 - 11:19h

Prezados por que esse comando exibe "3 4 5 6 2 1" eu não estou conseguindo entender porque.

usuario@hostname:~$ echo '1 2 3 4 5 6' | while read a b c; do echo result: $c $b $a; done
result: 3 4 5 6 2 1




  


2. Re: Dúvida

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 12/02/2015 - 11:29h


para tu entender digita assim

echo '1 2 3 4 5 6' | while read a b c; do echo result: $a; done


echo '1 2 3 4 5 6' | while read a b c; do echo result: $b; done


echo '1 2 3 4 5 6' | while read a b c; do echo result: $c; done


e olha o resultado


3. Re: Dúvida

Rodrigo Wanderson
rodrigowanderson

(usa Debian)

Enviado em 12/02/2015 - 12:54h

danniel-lara escreveu:


para tu entender digita assim

echo '1 2 3 4 5 6' | while read a b c; do echo result: $a; done


echo '1 2 3 4 5 6' | while read a b c; do echo result: $b; done


echo '1 2 3 4 5 6' | while read a b c; do echo result: $c; done


e olha o resultado




Entendi então $c herda os valores 3 4 5 6. É isso?


4. Re: Dúvida

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 12/02/2015 - 13:41h

Muito interessante a regra, mas percebi que a regra só funciona colocando espaços entre a sequencia numérica. Existe alguma regra sem os espaços?




5. Re: Dúvida

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 12/02/2015 - 20:23h

Tem que ter um separador (IFS) para que o read identifique que são campos e não uma única palavra ou número.

minha contribuição pra você é tirar o loop ... vc não precisa do while, pode fazer simplesmente ..

read a b c <<< "1 2 3 4 5 6"

isso mesmo, são 3 sinais de maior <<<






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts