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
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!
#!/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:
$ 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
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?
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...
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))
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...