[opensuse-es] Una de bash O:-)
Hola, Una preguntilla de bash. Tengo un script sencillo que uso para trocear los archivos de gran tamaño y enviarlos por correo electrónico. El programita me hace varias preguntas que yo debo responder para cada envío y que suelen ser siempre los mismos valores, cambiando apenas unos cuantos datos. Por ejemplo, la ruta del archivo que quiero trocear o la de los archivos ya troceados, la dirección de correo del destinatario, etc... Para eso, utilizo un simple "read": *** echo "¿Archivo a partir?" read ruta_p echo "¿Directorio con archivos para enviar?" read ruta_m *** La pregunta es ¿hay algua forma de que el valor de "read" venga predifinido, es decir, que me presente en pantalla una cadena completa para que yo pueda añadir algún dato más pero que no tenga que teclearla siempre entera? Hum, es un poco complicado de explicar >:-?, lo que quiero es que cuando el script me pregunte "¿Archivo a partir?" aparezca en pantalla una cadena tal que "/home/hpc02/Desktop/" y yo pueda: a) Añadir sólo el nombre del archivo, manteniendo el resto de la ruta b) Cambiar la ruta por completo En un primer momento había pensando en añadir nuevas variables que almacenen ese valor que suele ser fijo, pero me parece un poco "cutrecillo" por lo que he pensando que quizá esta opción ya está contemplada en el "read", en alguna otra instrucción o que sencillamente haya una forma mejor de hacerlo O:-) No sé si me he "explicao" bien... si necesitáis algún dato adicional o el script completo, decidlo :-) Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
2009/8/25 Camaleón <noelamac@gmail.com>:
No sé si me he "explicao" bien... si necesitáis algún dato adicional o el script completo, decidlo :-)
Esta claro. La opción para esto es -i pero recién a partir de bash 4. No es lo mismo que editar pero podrías verificar si no se ingresó nada usar el valor por defecto. O anexar según tus opciones. No sé si habrá algún fork del read que admita esta opción. -- Kind Regards -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 2009-08-25 a las 14:51 -0300, Gabriel escribió:
2009/8/25 Camaleón:
No sé si me he "explicao" bien... si necesitáis algún dato adicional o el script completo, decidlo :-)
Esta claro.
La opción para esto es -i pero recién a partir de bash 4. No es lo mismo que editar pero podrías verificar si no se ingresó nada usar el valor por defecto. O anexar según tus opciones.
No sé si habrá algún fork del read que admita esta opción.
Pues ese modificador me vendría muy bien, pero estoy con una versión anterior que supongo que no lo admite: hpc02@stthpc:~> /bin/bash --version GNU bash, version 3.2.25(1)-release (i586-suse-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 2009-08-25 a las 19:37:01, Camaleón escribió:
No sé si me he "explicao" bien... si necesitáis algún dato adicional o el script completo, decidlo :-)
Yo también tengo scripts así y no he conseguido hacerlo de la forma "elegante" con ninguna opción del read o algún comando auxiliar (de la forma cutre queda, efectivamente, cutre). A ver si alguien nos da un poco de luz...
Saludos, Saludos, -- Oscar Curero - Linux user: @306877
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 25 de agosto de 2009 12:37, Camaleón<noelamac@gmail.com> escribió:
Hola,
Una preguntilla de bash.
Tengo un script sencillo que uso para trocear los archivos de gran tamaño y enviarlos por correo electrónico.
El programita me hace varias preguntas que yo debo responder para cada envío y que suelen ser siempre los mismos valores, cambiando apenas unos cuantos datos. Por ejemplo, la ruta del archivo que quiero trocear o la de los archivos ya troceados, la dirección de correo del destinatario, etc...
Para eso, utilizo un simple "read":
*** echo "¿Archivo a partir?" read ruta_p
echo "¿Directorio con archivos para enviar?" read ruta_m ***
La pregunta es ¿hay algua forma de que el valor de "read" venga predifinido, es decir, que me presente en pantalla una cadena completa para que yo pueda añadir algún dato más pero que no tenga que teclearla siempre entera?
Hum, es un poco complicado de explicar >:-?, lo que quiero es que cuando el script me pregunte "¿Archivo a partir?" aparezca en pantalla una cadena tal que "/home/hpc02/Desktop/" y yo pueda:
a) Añadir sólo el nombre del archivo, manteniendo el resto de la ruta b) Cambiar la ruta por completo
En un primer momento había pensando en añadir nuevas variables que almacenen ese valor que suele ser fijo, pero me parece un poco "cutrecillo" por lo que he pensando que quizá esta opción ya está contemplada en el "read", en alguna otra instrucción o que sencillamente haya una forma mejor de hacerlo O:-)
No sé si me he "explicao" bien... si necesitáis algún dato adicional o el script completo, decidlo :-)
Saludos,
-- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Prueba si te sirve esto o es lo que necesitas: #******************************* #!/bin/bash DEFAULT="/home/test" echo -n "¿Archivo a partir? : $DEFAULT/" read ruta_p archivo=`echo $DEFAULT/$ruta_p` echo $archivo #******************************* -- hackob hackob@hackob.me twitter.com/hackob -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 2009-09-07 a las 18:46 -0500, hackob - escribió:
El 25 de agosto de 2009 12:37, Camaleón escribió:
Para eso, utilizo un simple "read":
*** echo "¿Archivo a partir?" read ruta_p
echo "¿Directorio con archivos para enviar?" read ruta_m ***
La pregunta es ¿hay algua forma de que el valor de "read" venga predifinido, es decir, que me presente en pantalla una cadena completa para que yo pueda añadir algún dato más pero que no tenga que teclearla siempre entera?
(...)
Prueba si te sirve esto o es lo que necesitas:
#******************************* #!/bin/bash
DEFAULT="/home/test" echo -n "¿Archivo a partir? : $DEFAULT/" read ruta_p
archivo=`echo $DEFAULT/$ruta_p` echo $archivo #*******************************
No es eso :-) Aunque presenta el valor de la cadena, el problema es que no se puede modificar, y lo que busco es poder cambiarlo en tiempo de ejecución, porque el archivo a partir puede estar en "/opt", por ejemplo. Gracias de todas formas. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
On Martes, 8 de Septiembre de 2009 08:32:13 Camaleón escribió:
No es eso :-)
Aunque presenta el valor de la cadena, el problema es que no se puede modificar, y lo que busco es poder cambiarlo en tiempo de ejecución, porque el archivo a partir puede estar en "/opt", por ejemplo.
dialog --inputbox "¿que fichero quieres copiar?" 8 40 "/opt/lo/que/sea" Saludos Miquel. -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 2009-09-08 a las 10:57 +0200, Miquel A. Noguera escribió:
On Martes, 8 de Septiembre de 2009 08:32:13 Camaleón escribió:
No es eso :-)
Aunque presenta el valor de la cadena, el problema es que no se puede modificar, y lo que busco es poder cambiarlo en tiempo de ejecución, porque el archivo a partir puede estar en "/opt", por ejemplo.
dialog --inputbox "¿que fichero quieres copiar?" 8 40 "/opt/lo/que/sea"
¡¡¡Yuuuhuuuuu!!! It works! Oh, yeahhh ;-D **** #!/bin/bash dialog --inputbox "Ruta al archivo..." 8 40 "/home/hpc02/Desktop/" 2> /tmp/automail_path.tmp.$$ retval=$? input=`cat /tmp/automail_path.tmp.$$` rm -f /tmp/automail_path.tmp.$$ echo "La ruta es" $input; *** Te iba a preguntar cómo recuperar el valor de la variable, pero buscando por Google sobre el uso del "dialog" he visto esta página con ejemplillos de uso: http://www.terminally-incoherent.com/blog/2006/08/21/bash-getting-input-from... Dice que lo manda a "stderr" en lugar de "stdout" y que es más sencillo enviarlo a un archivo y recuperarlo desde ahí ("pos fale" :-P) y parece que sí, que funciona muy bien y además, pinta un cuadro de diálogo la mar de "fashion" 8-) Bueno, pues voy a ver cómo lo integro en el script. Muchísimas gracias Miquel, ya lo había dejado por imposible. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
participants (5)
-
Camaleón
-
Gabriel
-
hackob -
-
Miquel A. Noguera
-
Oscar Curero