Foros del Web » Administración de Sistemas » Unix / Linux »

Ayuda con variables en script en bash

Estas en el tema de Ayuda con variables en script en bash en el foro de Unix / Linux en Foros del Web. Hola! estoy intentando hacer un script en bash que haga lo siguiente. Hay que ejecutarlo pasándole un parámetro: ./script param1 Y tiene que imprimir el ...
  #1 (permalink)  
Antiguo 27/06/2010, 04:50
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 10 meses
Puntos: 0
Ayuda con variables en script en bash

Hola! estoy intentando hacer un script en bash que haga lo siguiente.

Hay que ejecutarlo pasándole un parámetro:
./script param1

Y tiene que imprimir el texto que haya almacenado en ese parámetro, el script sería algo parecido a esto:

<code>
#!/bin/bash
texto1="Este es el texto 1"
texto2="Este es el texto 2"
texto3="Este es el texto 3"
texto4="Este es el texto 4"

PARAM=$1
echo $PARAM
</code>

Si ejecutamos: ./script param1
Tendría que mostrar: Este es el texto 1 (ahora muestra: param1)
Si ejecutamos: ./script param2
Tendría que mostrar: Este es el texto 2 (ahora muestra: param2)

La línea que falla supongo que es la del echo, pero no se como ponerla ($( echo $PARAM), $$($PARAM) ... ) ni si se puede.

Alguien tiene una solución?
La única condición sería no utilizar ningún IF ni similar en el script.

Gracias!
  #2 (permalink)  
Antiguo 28/06/2010, 08:37
 
Fecha de Ingreso: junio-2010
Mensajes: 42
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Ayuda con variables en script en bash

Puedes usar

case in
xxxx
xxxx
esac
  #3 (permalink)  
Antiguo 29/06/2010, 12:38
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con variables en script en bash

Tampoco me vale ya que el "case" es básicamente un IF, pero gracias!

Un saludo!
  #4 (permalink)  
Antiguo 29/06/2010, 20:30
 
Fecha de Ingreso: diciembre-2009
Mensajes: 20
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Ayuda con variables en script en bash

mira viejo te dejo un ejemplo sencillito que te puede ayudar :

v=variable
echo $v

asi de facil
  #5 (permalink)  
Antiguo 30/06/2010, 03:47
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con variables en script en bash

Hola Gangsta_ing, tampoco es eso lo que ando buscando...

La idea es que según el parámetro que pasen al script, imprima un texto u otro:

<code>
v=variable
y=variable2
z=variable3
echo $1 (recoge el parámetro $1 y en función de lo que valga tendría que mostrar una variable)
</code>

Si llamo al script de esta forma: "./script.sh y" me tendría que mostrar "variable2"
Si lo llamo con "./script.sh z" me tendría que mostrar "variable3"
  #6 (permalink)  
Antiguo 30/06/2010, 12:11
 
Fecha de Ingreso: junio-2010
Mensajes: 42
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Ayuda con variables en script en bash

Lo que estas pidiendo es una ejecución condicional, por lo tanto de alguna manera vas a tener que chequear las condiciones.

Porque no quieres usar if o case?
  #7 (permalink)  
Antiguo 30/06/2010, 12:32
 
Fecha de Ingreso: junio-2010
Mensajes: 42
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Ayuda con variables en script en bash

Se me acaba de ocurrir que puedes elaborar algo en base a arrays

Aqui tienes documentación sobre arrays in bash:

http://tldp.org/LDP/abs/html/arrays.html
  #8 (permalink)  
Antiguo 30/06/2010, 15:42
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con variables en script en bash

Hola norby. Te explico la idea del script que quiero hacer:

<code>
# saludo.sh
ingles="Hello!"
castellano="hola"
frances="bonjour"

echo $1 # Según el parámetro 1 mostrará un saludo en un idioma diferente
</code>

Ejecución:
./saludo.sh ingles -> Hello
./saludo.sh castellano -> hola
....

Si un usuario quiere añadir un saludo en otro idioma, simplemente tendría que añadir una cadena al principio del script, no tendría que modificar ningún IF, ningún CASE ni nada más, únicamente añadir una línea al principio.... esa es la idea.

Ahora le hecho un vistazo a los scripts con arrays que me has pasado a ver si me sirven.
Gracias! un saludo!
  #9 (permalink)  
Antiguo 30/06/2010, 16:28
 
Fecha de Ingreso: junio-2010
Mensajes: 42
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Ayuda con variables en script en bash

Esto es simplemente mi idea:

si quienes van a editar el script son usuarios, porque no separar los datos del script, o sea:

datos.txt (editable)
ingles hello
castellano hola
frances bonjour


Y el script lee el .txt y ejecuta la acción, podes usar condicionales ya que el script no va a ser editado por el usuario.

Ademas se lo automatizas con un parametro mas a script.sh

script.sh agregar italiano ciao

Y en un bloque del script pones que si $1 es igual a "agregar"
echo $2 $3 >> datos.txt

Tan solo una idea...

Saludos!
  #10 (permalink)  
Antiguo 30/06/2010, 17:08
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con variables en script en bash

Hola norby, pues según lo que me has dicho al final he podido hacer algo así:

<code>
#!/bin/bash

arr=( "espanyol#hola" "ingles#hello" "frances#bonjour")

len=${#arr[*]}

i=0
while [ $i -lt $len ]; do
lenguaje=$(echo ${arr[$i]} | cut -d"#" -f1 2>/dev/null)
if [ "$lenguaje" == "$1" ]; then
echo ${arr[$i]} | cut -d"#" -f2
fi
i=$(expr $i + 1)
done
</code>

$ sh lenguajes.sh espanyol
hola

$ sh lenguajes.sh ingles
hello

Voy a probar si con esto me vale porque el script que quiero hacer es un poquito más complejo, pero gracias por la ayuda.

Un saludo!
  #11 (permalink)  
Antiguo 30/06/2010, 17:53
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con variables en script en bash

Código Bash:
Ver original
  1. #!/bin/bash
  2.  
  3. texto1='Este es el texto 1'
  4. texto2='Este es el texto 2'
  5. texto3='Este es el texto 3'
  6.  
  7. echo ${!1}

Código:
$ ./archivo.sh texto1
Este es el texto 1
$./archivo.sh texto3
Este es el texto 3
Búscalo como "indirect expansion" (técnicamente correcto) o como "variables variables" . Punto 3.4.4:
http://tldp.org/LDP/Bash-Beginners-G...ect_03_04.html
__________________
I ♥ The Music!
  #12 (permalink)  
Antiguo 01/07/2010, 07:40
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con variables en script en bash

Muchas gracias maturano, era lo que estaba buscando, ahora le echaré un vistazo al enlace.

Un saludo!
  #13 (permalink)  
Antiguo 02/07/2010, 12:11
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 19 años, 7 meses
Puntos: 47
Respuesta: Ayuda con variables en script en bash

Buen tip Maturano!!!, no te pude poner Karma :(
__________________
¡Volviendo a la programación!
  #14 (permalink)  
Antiguo 02/07/2010, 13:49
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con variables en script en bash

Cita:
Iniciado por AleSanchez Ver Mensaje
Buen tip Maturano!!!, no te pude poner Karma :(
... pero yo te puedo quitar y estamos a mano .

OT: Tu página no sirve
__________________
I ♥ The Music!

Etiquetas: bash, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:52.