-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Tuesday 17 June 2003 15:42, Pablo Giménez Pizarro wrote: > Que tal lista, a ver me han surgido un par de dudillas mientrás > programaba un shell script. > El script es en sh. > La finalidad del script es adaptar el entorno para la ejecución de un > comando. > Para ello primero el script puede recibir un número indeterminado de > parámetros, entre 1 y 6 normalemente, todos estos son para el comando > que luego lanzaremos por lo tanto, necesito meter todos en una variable > para así a la hora de ejecutar el comado poder indicarle los parátros > facilmente. ¿Cómo puedo hacer esto de una forma más o menos limpia, hay > alguna forma de pasar todos los parámetros a partir de 0($0), es decir, > $1, $2, $3, etc..., a una variable sin tener que recorrerlos todos? si
debbie:/home/vcalzado# cat prueba.sh #!/bin/bash #todos los argumentos echo "$@" debbie:/home/vcalzado# bash prueba.sh espacio reservado para toda su publicidad espacio reservado para toda su publicidad > esto no es posible la única opción que quedaría sería ir iterando por > los parámtros hasta que ya ni haya más definidos??.(Algo así como un > while [ -z $X], la X se sustituiría por el número que tocase. > #!/bin/bash echo "$#" while [ 0 -ne $# ] do echo $1 shift done Con lo que es bastante sencillo ir metiendo los argumentos en su correspondiente posición... pero realmente lo que quieres es algo como.... /usr/share/doc/util-linux/examples/getopt-parse.bash.gz que te permite hacer las cosas que tu quieres controlando ademas errores y muchas cosas mas, para mas información man getopt, eval no tiene man aparentemente pero tambien te será muy útil > La otra duda estriba en que necesito leer un fichero que en su primera > línea contiene los nombres de otros ficheros a procesar, se me ocurrió > hacer algo así como: > #!/bin/sh > > BACKUPLIST='/exports/.backup.list' > BACKFILES='' > > if [ -e $BACKUPLIST ]; then > echo "Existe Lista" si te fijas...... estas haciendo una expansión de la variable y no declarándola, que esto no es perl..... > $BACKFILES=`cat < $BACKUPLIST` # Los nuevos backups. y al estar la variable vacia tienes =`cat < $BACKUPLIST` justo tu error :)) > fi > > echo "Files: $BACKFILES" > > exit 0 > > Pero el script anterior me devuelve el siguiente error: > cleo1:/tmp# ./p.sh > Existe Lista > ./p.sh: =/home: No existe el fichero o el directorio > Files: > cleo1:/tmp# > > El fichero /exports/.backup.list existe y contiene: > /home > > Alguna luz sobre este error, gracias. naaaaaaaaaaaaaa, hoy estamos de oferta , te vamos a regalar tres farolas :))) http://www.tldp.org/LDP/abs/html/index.html un saludo Victor - -- Lo que la naturaleza no da.... O'reilly & Associates no lo prestan -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+8BzEEzqHF8R72ekRAk6jAJ4wlWm40lmbK6FvZIcPkfj1lyd8tQCdGu71 iwQQvGYh/MMpdIc4p1rSKyM= =0NCd -----END PGP SIGNATURE-----