Re: [OT] script en bash problema con variables
El mié, 17-01-2007 a las 20:09 +0100, Iñigo Tejedor Arrondo escribió: > Ahora, tras varios cafés una jornada de lucha... digo de trabajo, ya > veo > todo más claro y ya lo tengo: Malditos atajos de teclado, se envio el mensaje antes de tiempo: Solución: que los mensajes sean una función, que no sea llamada hasta que el parámetro existe, y usar $i en vez de $1 :-) #!/bin/bash includemsgs(){ MSG[01]="blablabla $i blablabla" } funcion(){ echo $MSG[01] } while (($#)); do case $1 in -a) for i in `ls /directorio`; do includemsgs funcion "$i" `basename "$i" .xml` done ;; *) echo "foo" ;; esac Muchas gracias a todos -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: [OT] script en bash problema con variables
El mié, 17-01-2007 a las 09:32 -0300, danilote escribió: > ahora si : > yo diría que el problema esta aquí : > > MSG[01]="blablabla $1 blablabla" > > funcion(){ echo $MSG[01] } > > debría ser algo así: > > function funcion { > echo blablabla $1 blablabla > } Un millón de gracias a todos, pero veo que no me expliqué bien. Si el $1 va dentro de la función, no tiene que tomar el parámetro $1 del script, sino el $1 que se le pase a la función. Expliqué que mi problema reside en que es un script en varios idiomas (es para un livecd), que no uso gettext porque este script va dentro de un initrd. La idea de poner los mensajes a parte, al principio del script, es que los traductores los tengan todos juntos, dentro de un solo 'case $LANG' (ya que si no, si hay 20 mensajes, hay 20 'case $LANG' y los traductores tienen que recorrer el script entero buscándolos > tal vez esto te pueda ayudar más que yo :) > http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html He mirado eso y bastante google, así como cientos de pruebas, pero no consiguía el resultado que quería, que el mensaje no muestre la opción del script (-a), sino el primer parámetro que se le pasa a la función. Ahora, tras varios cafés una jornada de lucha... digo de trabajo, ya veo todo más claro y ya lo tengo: #!/bin/bash includemsgs(){ MSG[01]="blablabla $1 blablabla" } funcion(){ echo $MSG[01] } while (($#)); do case $1 in -a) for i in `ls /directorio`; do funcion "$i" `basename "$i" .xml` done ;; *) echo "foo" ;; esac shift done -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: [OT] script en bash problema con variables
ahora si : yo diría que el problema esta aquí : MSG[01]="blablabla $1 blablabla" funcion(){ echo $MSG[01] } debría ser algo así: function funcion { echo blablabla $1 blablabla } tal vez esto te pueda ayudar más que yo :) http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html
Re: [OT] script en bash problema con variables
Buenos, perdón por el off-topic, pero tiene que ver con nuestro deporte favorito... /bin/bash :) Lo que quiero hacer: Es un script, con varias funciones y varios argumentos posibles, uno de ellos es -a, que ejecuta el script para todos los ficheros de un directorio. El script es multidioma: case $LANG in es*) msg1="hola" ;; eu*) msg1="kaixo" ;; en*) msg1="hello" ;; esac Tiene muchos mensajes y creo que estando separados me ahorro unos cuantos cases y facilito la labor a los traductores. Problema: donde me gustaría ver: blablabla nombrefichero.xml blablabla veo esto: blablabla -a blablabla Ejemplo resumido: #!/bin/bash MSG[01]="blablabla $1 blablabla" funcion(){ echo $MSG[01] } while (($#)); do case $1 in -a) for i in `ls /directorio`; do funcion "$i" `basename "$i" .xml` done ;; *) echo "foo" ;; esac shift done Es tarde y estoy espeso... ofrezco un millón a quien me ilumine (un millón de gracias) Saludos si el nombre del fichero es el ultimo parametro, entonces creo que esto debería ser así: [OT] script en bash problema con variables DebianList Reply Reply to all Reply to allForward Forward Print Add Iñigo to Contacts list Delete this message Report phishing Show original Message text garbled? Iñigo Tejedor Arrondo to Debian show details 9:16 pm (11 hours ago) Buenos, perdón por el off-topic, pero tiene que ver con nuestro deporte favorito... /bin/bash :) Lo que quiero hacer: Es un script, con varias funciones y varios argumentos posibles, uno de ellos es -a, que ejecuta el script para todos los ficheros de un directorio. El script es multidioma: case $LANG in es*) msg1="hola" ;; eu*) msg1="kaixo" ;; en*) msg1="hello" ;; esac Tiene muchos mensajes y creo que estando separados me ahorro unos cuantos cases y facilito la labor a los traductores. Problema: donde me gustaría ver: blablabla nombrefichero.xml blablabla veo esto: blablabla -a blablabla Ejemplo resumido: #!/bin/bash MSG[01]="blablabla $1 blablabla" funcion(){ echo $MSG[01] } while (($#)); do case $1 in -a) for i in `ls /directorio`; do funcion "$i" `basename "$i" .xml` done ;; *) echo "foo" ;; esac shif
Re: [OT] script en bash problema con variables
Iñigo Tejedor Arrondo escribió: Buenos, perdón por el off-topic, pero tiene que ver con nuestro deporte favorito... /bin/bash :) Siii!! ;-) Lo que quiero hacer (...) No me ha quedado muy claro :-( Problema: donde me gustaría ver: blablabla nombrefichero.xml blablabla veo esto: blablabla -a blablabla Vale, eso sí que lo entiendo: #!/bin/bash # # Código que hace la parte que he entendido # Espero que al menos te de una pista # 2007-01 # funcion(){ echo "blablabla $1 blablabla" } while (($#)); do case $1 in -a) for i in `ls *.xml`; do funcion "$i" done ;; *) echo "foo" ;; esac shift done Saludos Güimi http://guimi.net -- Por favor, si me mandas correos con copia a varias personas, pon mi dirección de correo en copia oculta (CCO), para evitar que acabe en montones de sitios, eliminando mi privacidad, favoreciendo la propagación de virus y la proliferación del SPAM. Gracias. -- If you send me e-mail which has also been sent to several other people, kindly mark my address as blind-carbon-copy (or BCC), to avoid its distribution, which affects my privacy, increases the likelihood of spreading viruses, and leads to more SPAM. Thanks. -- -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: [OT] script en bash problema con variables
El mié, 17-01-2007 a las 01:36 +0100, Santiago Vila escribió: > On Wed, 17 Jan 2007, Iñigo Tejedor Arrondo wrote: > > > Buenos, perdón por el off-topic, pero tiene que ver con nuestro deporte > > favorito... /bin/bash :) > > > > Lo que quiero hacer: > > Es un script, con varias funciones y varios argumentos posibles, uno de > > ellos es -a, que ejecuta el script para todos los ficheros de un > > directorio. > > > > El script es multidioma: > > case $LANG in > > es*) > > msg1="hola" > > ;; > > eu*) > > msg1="kaixo" > > ;; > > en*) > > msg1="hello" > > ;; > > esac > > No reinventes la rueda. Usa gettext. OK, lo tendré en cuenta para los scripts que no se ejecuten en un initrd. Y ahora vamos con el ejemplo, que no usa el 'case' de lenguaje para nada. Muchas gracias por el consejo, no sabía que servía para sh... :) Saludos -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: [OT] script en bash problema con variables
On Wed, 17 Jan 2007, Iñigo Tejedor Arrondo wrote: > Buenos, perdón por el off-topic, pero tiene que ver con nuestro deporte > favorito... /bin/bash :) > > Lo que quiero hacer: > Es un script, con varias funciones y varios argumentos posibles, uno de > ellos es -a, que ejecuta el script para todos los ficheros de un > directorio. > > El script es multidioma: > case $LANG in > es*) > msg1="hola" > ;; > eu*) > msg1="kaixo" > ;; > en*) > msg1="hello" > ;; > esac No reinventes la rueda. Usa gettext. $ apt-cache show gettext-base [...] Description: GNU Internationalization utilities for the base system This package includes the gettext and ngettext programs which allow other packages to internationalize the messages given by shell scripts.