Re: [OT] script en bash problema con variables

2007-01-17 Por tema Iñigo Tejedor Arrondo
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

2007-01-17 Por tema Iñigo Tejedor Arrondo
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

2007-01-17 Por tema danilote

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

2007-01-17 Por tema danilote

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

2007-01-17 Por tema Güimi

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

2007-01-16 Por tema Iñigo Tejedor Arrondo
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

2007-01-16 Por tema Santiago Vila
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.