🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #12809

Re: ¿Bash y el ámbito de las variables?

#12809
From: Jesus M. NAVARRO
Date: Wed, 09 May 2001 08:16
55 lines
2903 bytes
Hola, David:

David Cana wrote:

> Buenas.
> 
> Este trozo de script lee de un fichero una lista de ficheros que hay que
> copiar posteriormente:
> 
> ------------
> (
> while read LINEA
>         do
>                 LISTA_DIRS="$LISTA_DIRS .$LINEA"
>                 MENSAJE="Agregando $LINEA a la lista de directorios a
> copiar...
>                 echo $MENSAJE
>         done
> ) < $RUTA_FICHERO_CONF_BACKUP
> 
> MENSAJE="La lista definitiva de directorios a copiar es $LISTA_DIRS"
> echo $MENSAJE
> ----------
> 
> Pues bien, no funciona. La variable LISTA_DIRS esta vac�a al final del
> script. Parece como si nos hubi�ramos salido del �mbito de la variable. �sto
> s� funciona:
> 
> ------------
> (
> while read LINEA
>         do
>                 LISTA_DIRS="$LISTA_DIRS .$LINEA"
>                 MENSAJE="Agregando $LINEA a la lista de directorios a
> copiar...
>                 echo $MENSAJE
>         done
> 
>         MENSAJE="La lista definitiva de directorios a copiar es $LISTA_DIRS"
>         echo $MENSAJE
> ) < $RUTA_FICHERO_CONF_BACKUP
> ----------
> 

...echa un vistazo a la evoluci�n de la variable $LISTA_DIRS l�nea por 
l�nea y ver�s lo que ocurre:
El caso es que la redirecci�n de $RUTA_FICHERO_CONF_BACKUP se hace 
exactamente como pretendes: l�nea por l�nea.  En el segundo caso la cosa 
funciona como t� quieres porque pides el valor de la variable *dentro* 
del bucle que lee l�neas(dentro de (...) < $RUTA_FICHERO_BACKUP), por lo 
que s�lo pides salida de valores *mientras hay valores*.  En el primer 
caso, pides la salida *fuera* del bucle.  El valor de la variable es el 
que queda *despu�s* de haber le�do la �ltima l�nea, o sea, nada 
(precisamente porque en esa iteraci�n ya no hay nada que leer es por lo 
que el bucle 'while read LINEA' "sabe" que ya ha acabado su trabajo).
Technical Details
Message-ID: <3AF8FCCB.7020800@geocities.com>
Path: arc1-ca.pugleaf.net!archiver1.sj.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!jussieu.fr!news.rediris.es!garse!news.iddeo.es!elrond.intranet!nobody
References: <9d91qq$8al$1@diana.bcn.ttd.net>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,172d2a91d5047ff8
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2001-05-11 00:10:01 PST
Path: arc1-ca.pugleaf.net!archiver1.sj.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!jussieu.fr!news.rediris.es!garse!news.iddeo.es!elrond.intranet!nobody
From: "Jesus M. NAVARRO" <jesus_navarro@geocities.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: ¿Bash y el ámbito de las 
 variables?
Date: Wed, 09 May 2001 10:16:11 +0200
Organization: Iddeo - Retevisi�n
Lines: 56
Message-ID: <3AF8FCCB.7020800@geocities.com>
References: <9d91qq$8al$1@diana.bcn.ttd.net>
NNTP-Posting-Host: 62.81.130.4
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 8bit
User-Agent: Mozilla/5.0 (X11; U; Linux 2.2.19-Nav02 i686; en-US; 0.8.1) Gecko/20010421
X-Accept-Language: es-ES, es, en