Bash script: variable array

Iniciado por Echizen, 11 Junio 2016, 03:07 AM

0 Miembros y 1 Visitante están viendo este tema.

Echizen

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 (bash) [Seleccionar]

#Se declara una variable de tipo array y se le asignan 4 valores
declare -a var=('192.168.1.1' 'Planta baja' '192.168.1.2' 'Planta alta')

#Se muestra la variable completa
echo "${var[@]}"



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

Código (bash) [Seleccionar]

192.168.1.1 Planta baja 192.168.1.2 Planta alta



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

Código (bash) [Seleccionar]

#Cadena de conexion
Conexion="mysql -h IP_DB_HOST DBNAME -uUSER -pPASS -e"
#Consulta de SQL
SELECT="SELECT ip,descripcion FROM DB.tabla;"

#Se declara la variable de tipo array y se ejecuta la consulta de SQL descartando el encabezado y los errores de la misma
#Luego se agregan comillas simples a cada "row" de la consulta y se quitan saltos de linea..
declare -a query=$($Conexion "$SELECT" -N 2> /dev/null | sed "s/\t/' '/g;s/^/'/;s/$/'/" | sed ':a;N;$!ba;s/\n/ /g')


#ahora, se imprime en pantalla la variable
echo -e "${query[@]}"




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 (bash) [Seleccionar]

'192.168.1.1' 'Planta baja' '192.168.1.2' 'Planta alta'



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 (bash) [Seleccionar]

        exec 3>&1
        selection_menu=$(dialog \
        --backtitle "$BACKTITLE" \
        --title "$1" \
        --clear \
        --cancel-label "Volver" \
        --menu "$2" 0 0 4 \
        "${query[@]}" \                    # aqui es donde se inserta la variable
        2>&1 1>&3)


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!

Rav3nS

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

Echizen

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?