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]