🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Comportamiento extraño (al menos a mi me lo parece) en Bash

#209
From: Bypper
Date: Fri, 13 Nov 2009 09:03
98 lines
3768 bytes
Buenas:

Tengo 2 ficheros de texto, ambos con un listado de ficheros con el
nombre y el tama�o:

$ ls -l /tmp/comproba_*
-rw-r--r--    1 I0775    users          56 nov 12 13:50 /tmp/comproba_antes
-rw-r--r--    1 I0775    users          56 nov 12 15:12
/tmp/comproba_despues

$ cat /tmp/comproba_antes

.. 4096
comproba.sh 425
. 4096
.comproba.sh.swp 12288

$ cat /tmp/comproba_despues

.. 4096
.comproba.sh.swp 12288
comproba.sh 531
. 4096

Y luego un script que simplemente comprueba cada fichero del
"comproba_antes" a ver si esta en el "comproba_despues", pero tiene un
comportamiento extra�o que no entiendo.

El script es el siguiente:
..................................................
#!/bin/bash
# defino los 2 ficheros...
ANT='/tmp/comproba_antes'
DES='/tmp/comproba_despues'
# compruebo parametro de entrada...
[[ $# -ne 1 ]] && exit 1
# funcion de grepeo sobre el 2� fichero...
aversiesta(){
        grep $1 $DES
}
comparativa(){
	# procesamos todas las lineas del fichero 1...
        cat $ANT | while read L
        do
	  # definimos variable con el campo 1: el nombre...
          fich=$(echo $L | cut -f1 -d' ')
	  # si no es '.' ni '..' nos vale ...
   	  [[ $fich = '.' ]] || [[ $fich = '..' ]] || echo $fich
        done
}
comparativa
..................................................
Aqui la salida es correcta, sale el nombre del fichero, y la variable
$fich extrae el valor sin problemas.

$ bash comproba.sh2 .

comproba.sh
.comproba.sh.swp


Pero luego, si hago la modificaci�n siguiente:

comento esta linea:
                [[ $fich = '.' ]] || [[ $fich = '..' ]] || echo $fich
y descomento la siguiente (que est� comentada ahora)
                [[ $fich = '.' ]] || [[ $fich = '..' ]] || aversiesta $fich

con la intenci�n de llamar a la funci�n "aversiesta" con la variable
$fich como parametro de entrada, entonces esta variable ya no coge valor
alguno, observad:

$ bash -x comproba.sh2 .
+ ANT=/tmp/comproba_antes
+ DES=/tmp/comproba_despues
+ [[ 1 -ne 1 ]]
+ comparativa
+ cat /tmp/comproba_antes
+ read L
++ echo
++ cut -f1 '-d '
+ fich=
+ [[ '' = \. ]]
+ [[ '' = \.\. ]]
+ aversiesta
+ grep /tmp/comproba_despues
+ read L
$
$

Es decir, todavia no ha llegado a procesar la linea que hemos a�adido, y
la variable definida anteriormente esta ahora vacia. !!!!

no se, supongo que algo se me escapa, pero no veo el que ...

No se si me he explicado bien, cualquier duda me comentais...

saludos,
Technical Details
Message-ID: <vvjvs6-qre.ln1@apevia.bersol.sytes.net>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!fu-berlin.de!news.eteo.mondragon.edu!eteo.mondragon.edu!hercules.escomposlinux.org!escomposlinux.org!apevia.bersol.sytes.net!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 646d03421f,fc7a7c8a3dc5317e,start
X-Google-Attributes: gid646d03421f,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!fu-berlin.de!news.eteo.mondragon.edu!eteo.mondragon.edu!hercules.escomposlinux.org!escomposlinux.org!apevia.bersol.sytes.net!not-for-mail
From: Bypper <bypper@microsoft.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Comportamiento extraño (al menos a mi me lo parece) en Bash
Date: Fri, 13 Nov 2009 10:03:21 +0100
Organization: escomposlinux.org
Lines: 98
Message-ID: <vvjvs6-qre.ln1@apevia.bersol.sytes.net>
NNTP-Posting-Host: 87.235.69.75
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: hercules.cohp1 1258103066 1690 87.235.69.75 (13 Nov 2009 09:04:26 GMT)
X-Complaints-To: newsmaster@news-17.escomposlinux.org
NNTP-Posting-Date: Fri, 13 Nov 2009 09:04:26 +0000 (UTC)
User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706)
X-Original-Bytes: 3577