[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Laço com while não continua após primeira entrada
From: |
jimmy |
Subject: |
Re: [shell-script] Laço com while não continua após primeira entrada |
Date: |
Mon, 12 Dec 2011 22:15:10 -0200 |
User-agent: |
mutt-ng/devel-r804 (Linux) |
On Mon, Dec 12, 2011 at 03:57:26PM -0300, M. Rodrigo Monteiro wrote:
> 2011/12/12 miranda <address@hidden>
> >
> > acredito que você precisará utilizar a opção
> > -n
> > do ssh
> > Dá uma olhhadinha no man para entender o porquê
>
> Era exatamente isso. Obrigado!
> Vi o man, mas realmente não entendi porquê não funciona...
Apenas para contextualizar,
extraindo o trecho relevante da man page temos:
-n Redirects stdin from /dev/null (actually, prevents reading
from stdin). (...)
Precisamos entender que há um redirecionamento indesejado da entrada
padrão aqui pois, quando você fez:
while ...
done < arquivo
sua entrada padrão é "arquivo" e você deseja iterar pelas linhas desse
arquivo dentro do while e, ao não usar o switch -n no ssh, fez com o o
mesmo passasse a ler "arquivo" antes que while pudesse fazê-lo.
Podemos constatar isso fazendo uma simples experiência: passando para o
ssh algum comando leia stdin (no caso "arquivo") e nos mostre essa
leitura:
$ cat arquivo
eu
comi
todo
seu
input
:P
$ while read line; do
ssh 127.0.0.1 'while read stdin; do
echo $stdin
done'
echo li com while: $line
done < arquivo
comi
todo
seu
input
:P
li com while: eu
Faça testes removendo o comando ssh e também inserindo o switch -n.
>
> M. Rodrigo Monteiro
>
> "Free as in Freedom, not free as in free beer"
> "As we are liberated from our own fear, our presence automatically
> liberates others"
> Linux User # 403730
[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com