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

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

Re: [shell-script] Pegar valor de variável fora do Loop


From: Rodrigo Monteiro
Subject: Re: [shell-script] Pegar valor de variável fora do Loop
Date: Fri, 18 Nov 2005 11:10:45 -0300

Rubens,


On 11/18/05, Rubens S. Nogueira <address@hidden> wrote:
> Pessoal, estou com um problema aqui.
>
> Eu tenho o arquivo lista abaixo:
>
> $ cat lista.txt
> joao
> pedro
> tiago
>
>
> e um script para contar as linhas:
>
> $ cat contar_nomes.bash
> #!/bin/bash
>
> i=0
> cat lista.txt | while read LINE; do
>   let i++
>   echo "dentro "$i
> done
>
> echo "fora "$i
> exit
>
> ** Eu sei que para contar as linhas de um arquivo apenas precisaria
> usar o "wc -l" porém criei este script para exemplificar meu problema.
>
> O retorno do script é este:
>
> $ ./contar_nomes.bash
> dentro 1
> dentro 2
> dentro 3
> fora 0
>
>
> Como eu faço para incrementar uma variável dentro de um loop de forma
> que eu consiga pegar o valor dela fora do loop??
>
>
> Obrigado,
> Rubens Saraiva
>
>

cesecsrv:/tmp# cat teste.txt
aaa
bbb
ccc
cesecsrv:/tmp# cat teste.sh
i=0
while read linha ; do
  let i++
  echo "dentro $i"
done < teste.txt
echo "fora $i"

# resultado
dentro 1
dentro 2
dentro 3
fora 3
cesecsrv:/tmp#

Alguém que se habilite a explicar melhor e mais detalhado... :)
O problema está no pipe que gera uma subshell, e quando o while acaba
ele mata essa subshell e portanto o valor de $i não existirá mais.

[]s

--
Rodrigo Monteiro
"Free as in Freedom, not free as in free beer"
JID: address@hidden
address@hidden


reply via email to

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