[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