Article View: es.comp.os.linux.programacion
Article #5969Re: Problemas con bash y ficheros con espacios
From: garlito
Date: Wed, 27 Aug 2003 17:30
Date: Wed, 27 Aug 2003 17:30
64 lines
3168 bytes
3168 bytes
Gorka Olaizola escribi�:
Lo del getopts, ahora mismo ni idea, pero te comento algunas cosillas
que pones mal
> images=$@
>
> goaway=0
> for i in $images
^^^^^^^
Aqu� hay un fallo. Si usas $@ en el for, cuarquier argumento que tenga
espacios te lo dividir� en palabras. Usa "$@" mejor
> do
> if [ ! -r "$i" ]
^^^^
Aqu� son correctas las comillas. Tambi�n puedes usar [[ ]], que no
divide palabras y no necesita comillas, aunque es de bash, no de sh
> then
> echo "The picture \"$i\" does not exists or is unreadable"
^^
No necesitas eso, $i ya va entre comillas
> goaway=1
> fi
> numimages=$(($numimages+1))
> done
>
> En otro caso he logrado hacer funcionar los nombres con espacios metiendo
> los ficheros uno por l�nea en un fichero y haciendo esta construcci�n
Los nombres con espacios se puden hacer funcionar all� donde funcionen
los nombres sin espacios, es s�lo cuesti�n de entrecomillar ;-)
>
> while read f
> do
> variable="$f"
^^^^
Aqu� no necesitas comillas
> done < "$fichero"
^^^^^^^^^^
pa m� que aqu� tampoco, aunque tenga espacios
Resumiendo,
Entrecomillar:
- comando "argumento de varias palabras"
- "$*" y "$@" porque los argumentos puden contener espacios.
- echo "$i" siempre que la var i se haya tomado de un read, de una
concordancia con archivo ( for i in * por ejemplo) o de un argumento (
for i in "$@" )
- Expansi�n de par�metro dentro de [ ], porque test separa en palabras
No entrecomillar:
- asignaciones: var1=$var2
- concordancias con archivos: for i in * toma los nombres de archivos
con sus espacios incluidos
No es exhaustivo, pero para que te hagas una idea puede valer
Saludos
Technical Details
Message-ID:
<4spiib.nu1.ln@garlito06400.uned.es>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!kibo.news.demon.net!demon!newshub1.home.nl!home.nl!amsnews01.chello.com!news-hub.cableinet.net!blueyonder!marmolejo.escomposlinux.org!escomposlinux.org!pinsa.escomposlinux.org!garlito06400.uned.es!nobodyReferences:
<slrnbkpjga.1mg.gorka@conn.helvete.escomposlinux.org>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,7bd7fe9d2d980812 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-08-27 10:30:54 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!kibo.news.demon.net!demon!newshub1.home.nl!home.nl!amsnews01.chello.com!news-hub.cableinet.net!blueyonder!marmolejo.escomposlinux.org!escomposlinux.org!pinsa.escomposlinux.org!garlito06400.uned.es!nobody From: garlito <garlito_quitaesto@wanadoo.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: Problemas con bash y ficheros con espacios Date: Wed, 27 Aug 2003 19:30:44 +0200 Organization: Ecolnet Lines: 64 Message-ID: <4spiib.nu1.ln@garlito06400.uned.es> References: <slrnbkpjga.1mg.gorka@conn.helvete.escomposlinux.org> NNTP-Posting-Host: cliente-217216201104.ubrcoa01.supercable.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit X-Trace: pinsa.escomposlinux.org 1062005454 20761 217.216.201.104 (27 Aug 2003 17:30:54 GMT) X-Complaints-To: newsmaster@pinsa.escomposlinux.org NNTP-Posting-Date: Wed, 27 Aug 2003 17:30:54 +0000 (UTC) User-Agent: slrn/0.9.7.4 (Linux)