Pular para o conteúdo
  • Denunciar
  • Indicar

1. Dúvida

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


Responder tópico

2. Re: Dúvida

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

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

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

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 <<<

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder