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

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

Re: [shell-script] Depois do done minhas variaveis somem??


From: Rogério Poças - Desenvolvimento
Subject: Re: [shell-script] Depois do done minhas variaveis somem??
Date: Wed, 16 Nov 2005 15:20:39 -0200

Salve,

Gentil, a sua sugestão além de ser mais "clean" funcionou 1000% :-) ficou show de bola muito bom mesmo, porém quando adaptei a sua solução para recuperar outros dois valores que preciso, não tive o mesmo êxito :-( acho que é devido cada linha de resultado retornar uma linha com várias colunas e ele pegou um valor para cada coluna de cada linha onde era para retornar um valor para cada linha, independente das colunas que a compõe...

============>Corte aqui<============
#Adaptado seguindo a solução do Gentil
for REDE_UTIL in $(netstat -i | grep eth)
do
       let I++
[ "${REDES_UTIL}" ] && REDES_UTIL="${REDES_UTIL}, rede_util${I} = '${REDE_UTIL}'" \
       || REDES_UTIL="rede_util${I} = '${REDE_UTIL}'"
done
echo $REDES_UTIL
============>Corte aqui<============

============>Corte aqui<============
#Da maneira que estava antes porém quando sai do loop perde valor
CONTADOR=1
netstat -i | grep eth |
while read i
do
REDE_UTIL="$REDE_UTIL , rede_util$CONTADOR = '$i' "
CONTADOR=`expr $CONTADOR + 1`
echo $REDE_UTIL
done
echo $REDE_UTIL

CONTADOR=1
df -h | grep /dev | grep -v shm |
while read i
do
DISCO="$DISCO , disco$CONTADOR = '$i' "
CONTADOR=`expr $CONTADOR + 1`
echo $DISCO
done
echo $DISCO
============>Corte aqui<============

Existe alguma maneira de seguindo a sua ideia de ele não quebrar cada valor coluna e sim por linha??

Abraços
OT: Um dia ainda fico bom nisso!!!

Rogério Poças
----- Original Message ----- From: "Gentil de Bortoli Jr" <address@hidden>
To: <address@hidden>
Sent: Wednesday, November 16, 2005 2:02 PM
Subject: Re: [shell-script] Depois do done minhas variaveis somem??


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Rogério, isso acontece pois a variável $REDE que você define dentro do
while só existe no escopo desse laço, o qual foi criado em um sub-shell
(pelo pipe). Quando você termina o while, e por conseqüência o sub-shell
criado por ele, e volta para o shell que iniciou o processo, a variável
$REDE não está definida. Se não me engano, isso foi bem discutido em
algumas mensagens anteriores. Espero não estar falando besteira. Estou
no estado de letargia pós-almoço. :)

Como você reparou, eu enrolei e não dei a solução para esse caso. Mas
envio uma outra sugestão:

#!/bin/bash
for REDE in $(grep : /proc/net/dev | grep -v lo | cut -d : -f 1)
do
   let I++
   [ "${REDES}" ] && REDES="${REDES}, Rede ${I} = '${REDE}'" \
   || REDES="Rede ${I} = '${REDE}'"
done
echo $REDES

[]s
- --
Gentil de Bortoli Júnior
http://gentil.bortoli.com.br
KeyID: 0x8383E070 - www.keyserver.net

"There Is No Gene For The Human Spirit"

Rogério Poças - Desenvolvimento wrote:
=============>Corte aqui<==============
#!/bin/bash
CONTADOR=1
cat /proc/net/dev | grep : | grep -v lo | cut -c0-6 |
while read i
do
        echo "$i - $CONTADOR"
        REDE="$REDE , rede$CONTADOR = '$i' "
        CONTADOR=`expr $CONTADOR + 1`
        echo -e "$REDE"    #Aqui funfa :-)
done
echo -e "$REDE"     #Aqui não :-(
=============>Corte aqui<==============
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFDe1gNU6AHyoOD4HARAiNRAKCuXrM4Fyd/u8PwWkFSSIc+BJNn1ACdE1iW
HSUaftOc0dcZJoiQyuKvVzo=
=EYlo
-----END PGP SIGNATURE-----


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos









--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.3/173 - Release Date: 16/11/2005




reply via email to

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