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
#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
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
#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
'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
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!