elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Bash script: variable array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bash script: variable array  (Leído 3,303 veces)
Echizen

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Bash script: variable array
« en: 11 Junio 2016, 03:07 am »

Buenas tardes a todos,

Tengo un problema con la forma en que se asigna valor a una variable de tipo array. Paso a explicar mostrando el codigo:

Código
  1. #Se declara una variable de tipo array y se le asignan 4 valores
  2. declare -a var=('192.168.1.1' 'Planta baja' '192.168.1.2' 'Planta alta')
  3.  
  4. #Se muestra la variable completa
  5. echo "${var[@]}"
  6.  
  7.  

Al ejecutar el codigo, se obtiene el siguiente resultado. Notar que no muestra las comillas simples

Código
  1. 192.168.1.1 Planta baja 192.168.1.2 Planta alta
  2.  


Ahora vamos a lo lindo. Completar la variable con el resultado de una consulta de SQL

Código
  1. #Cadena de conexion
  2. Conexion="mysql -h IP_DB_HOST DBNAME -uUSER -pPASS -e"
  3. #Consulta de SQL
  4. SELECT="SELECT ip,descripcion FROM DB.tabla;"
  5.  
  6. #Se declara la variable de tipo array y se ejecuta la consulta de SQL descartando el encabezado y los errores de la misma
  7. #Luego se agregan comillas simples a cada "row" de la consulta y se quitan saltos de linea..
  8. declare -a query=$($Conexion "$SELECT" -N 2> /dev/null | sed "s/\t/' '/g;s/^/'/;s/$/'/" | sed ':a;N;$!ba;s/\n/ /g')
  9.  
  10.  
  11. #ahora, se imprime en pantalla la variable
  12. echo -e "${query[@]}"
  13.  
  14.  


Al momento de ejecutar el codigo, vemos que se obtiene el mismo resultado, con la diferencia de que ahora si muestra las comillas simples

Código
  1. '192.168.1.1' 'Planta baja' '192.168.1.2' 'Planta alta'
  2.  


Ahora, la explicación del problema...

Necesito pasar la variable como parametro para crear un box de menu utilizando el comando "dialog"

ejemplo:
Código
  1.        exec 3>&1
  2.        selection_menu=$(dialog \
  3.        --backtitle "$BACKTITLE" \
  4.        --title "$1" \
  5.        --clear \
  6.        --cancel-label "Volver" \
  7.        --menu "$2" 0 0 4 \
  8.        "${query[@]}" \                    # aqui es donde se inserta la variable
  9.        2>&1 1>&3)
  10.  

el problema que tengo, es que en el primer ejemplo (donde se crea la variable manualmente), el script funciona perfecto, pero cuando creo la variable y le asigno los valores de la consulta de sql, el comando "dialog" me informa que no se obtuvieron la cantidad de parámetros esperados.

Se que es bastante rebuscada la consulta, pero..... alguna idea?????

Desde ya agradezco su ayuda!

Saludos!


En línea

Rav3nS

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Bash script: variable array
« Respuesta #1 en: 12 Junio 2016, 02:41 am »

Has probado con bash -x para ver que parametros le estas pasando al dialog?
A partir de ahi podrias modificar para que le entrase lo que tu quisieras y funcionara


En línea

Echizen

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Bash script: variable array
« Respuesta #2 en: 12 Junio 2016, 03:56 am »

desconozco como utilizar el bash -x para tal fin.

cual seria la idea, poner en medio del script la sentencia "bash -x $variable" para saber que valor tiene asignado?

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines