[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dudas haciendo un shell script



-----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-----



Reply to: