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

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








Reply to: