[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Problemas com perda de valor de uma variável
From: |
MrBiTS |
Subject: |
Re: [shell-script] Problemas com perda de valor de uma variável |
Date: |
Wed, 07 May 2008 12:55:11 -0300 |
User-agent: |
Thunderbird 2.0.0.14 (Windows/20080421) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
| Bom dia. Estou lidando com um problema xarope. olhem esse código:
|
| ...
|
| compila_projeto(){
| svn list $servidor_svn/tags/ | while read linha; #onde linha recebe a
| listagem do repositorio nesse diretorio
| do
| temp=`echo $linha | sed 's/^.*_//'` # formato da variável $linha = SIP_1.0
| echo $temp # imprime 1.0
|
| done
|
| echo " valor de temporario ${temp}"
|
| Ao imprimir o $temp, ele nao imprime nada ( ou seja, um espaço em
| branco ouuu o que for declarado antes do While) . No entanto, se eu
| imprimir dentro, ele imprime o resultado do sed.
| Tentei declarar a variavel antes, mas mesmo assim o valor é perdido.
|
| Alguém tem idéia do porquê disso??
Isso acontece por causa do pipe. Bash não pode abrir um pipe para ele
mesmo ( pelo menos não sem um deadlocking), então ele precisa iniciar
outro processo para rodar o loop. O outro processo não pode modificar o
ambiente do seu processo pai, que é o que você quer fazer.
Mudando seu código para algo como:
#!/bin/bash
compila_projeto(){
~ while read linha; do
~ temp=$(echo $linha | sed 's/^.*_//')
~ echo $temp
~ done < <(svn list $servidor_svn/tags/)
}
compila_projeto
echo " valor de temporario $temp"
tudo funcionará
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFIIdDfrDdxWm3R8YYRApACAJ9WvZksnugpV3AzGluxZckiPKyeJgCfeMJ3
ARcfYKwZC4KbN9LOde5HEPk=
=fDgi
-----END PGP SIGNATURE-----