Article View: es.comp.os.linux.programacion
Article #209Comportamiento extraño (al menos a mi me lo parece) en Bash
From: Bypper
Date: Fri, 13 Nov 2009 09:03
Date: Fri, 13 Nov 2009 09:03
98 lines
3768 bytes
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-mailShow 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