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

[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-----


reply via email to

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