Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Echizen

#11
en un script, las variables $1, $2, $3... son variables reservadas para pasar argumentos.

si te fijas en mi anterior respuesta, cuando ejecuto el script, seguido del nombre del script pongo el dominio sobre el cual quiero realizar la consulta. Ese dominio, es tomado como el "primer parametro" que se le envia desde la consola al script y es almacenado dentro de la variable "$1"

con respecto a los parentesis y las llaves...

Código (bash) [Seleccionar]
echo $((6%5+1))
El doble paréntesis nos sirve para operaciones aritméticas, que en este caso se prueba que primero hay un módulo resultando un 1 y a éste se le suma 1, teniendo como eco, un 1 . Tambien se pueden hacer acumuladores al estilo ((Acumulador++)) Donde acumulador en un principio tiene 1 y después de la ejecución tiene 2, también depositar en una variable algún valor como ((Acumulador=10))

Código (bash) [Seleccionar]
sString=abc2de; echo ${sTring%2*}
Las llaves nos sirven para cortar un registro cuando encuentre la ocurrencia del valor hacia atrás; en este ejemplo devuelve abc


espero que te sea de utilidad

Saludos...
#12
Buenas tardes Rav3nS,

yo encararía el script utilizando una sola variable de tipo array.

te paso como quedaria el codigo, lo probé en mi compu y va de 10!

Código (bash) [Seleccionar]
#!/bin/bash

declare -a array=(".cat", ".es", ".com", ".net", ".org", ".eu", ".info")

for ((i=0;i<=6;i++));
do
        if [[ $(host -t ns "${1}${array[i]}" |grep found | wc -l) -eq 0 ]];
        then
                echo "Name Serveer ${1}${array[i]} DISPONIBLE"
        else
                echo "Name Serveer ${1}${array[i]} OCUPADO"
        fi
done


Resultado:
Código (bash) [Seleccionar]
$ sh test.sh oneclic
Name Serveer oneclic.cat, OCUPADO
Name Serveer oneclic.es, OCUPADO
Name Serveer oneclic.com, OCUPADO
Name Serveer oneclic.net, OCUPADO
Name Serveer oneclic.org, OCUPADO
Name Serveer oneclic.eu, OCUPADO
Name Serveer oneclic.info DISPONIBLE


Como comentario, te recomiendo que las variables las encierres entre llaves y no entre parentesis.

Espero te sea de utilidad.

Saludos
#13
Scripting / Bash script: variable array
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 (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!