Tratamiento de variables Script Linux

Iniciado por Rav3nS, 7 Junio 2016, 12:50 PM

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

Rav3nS

Soy nuevo en esto de scripts de linux y estoy intentando hacer este pequeño script que mire los name server .cat .es etc de lo que le pase por referencia.

El caso es que añado el ". dominio" a las variables y luego intento llamar a cada una en el for pero no hay manera..

Quiero llamar a var y que eso sea var1, var2 , etc.
Alguna manera?

Gracias de antemano


#!/bin/bash
# check domains: .cat .es .com .net .org .eu .info

var1="$1.cat"
var2="$1.es"
var3="$1.com"
var4="$1.net"
var5="$1.org"
var6="$1.eu"
var7="$1.info"

for ((i=1;i<=7;i++));
do
#echo "$((var${i}))"
if [ $(host -t ns $((var${i})) | grep found | wc -l) eq 0 ]; then
echo "name server "$((var${i}))" DISPONIBLE"
else
echo "name server "$((var${i}))" OCUPADO"
fi
done

Echizen

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

Rav3nS

Gracias por tu respuesta.
Tengo unas dudas, a ver si me puedes ayudar:

En "${1}${array}" que es el $1?

Y luego porqe me recomiendas llaves y no paréntesis? Cual es la diferencia entre cada uno?

Echizen

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...