elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Tratamiento de variables Script Linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tratamiento de variables Script Linux  (Leído 2,615 veces)
Rav3nS

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Tratamiento de variables Script Linux
« en: 7 Junio 2016, 12:50 pm »

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


Código:
#!/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


En línea

Echizen

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Tratamiento de variables Script Linux
« Respuesta #1 en: 12 Junio 2016, 02:30 am »

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
  1. #!/bin/bash
  2.  
  3. declare -a array=(".cat", ".es", ".com", ".net", ".org", ".eu", ".info")
  4.  
  5. for ((i=0;i<=6;i++));
  6. do
  7.        if [[ $(host -t ns "${1}${array[i]}" |grep found | wc -l) -eq 0 ]];
  8.        then
  9.                echo "Name Serveer ${1}${array[i]} DISPONIBLE"
  10.        else
  11.                echo "Name Serveer ${1}${array[i]} OCUPADO"
  12.        fi
  13. done
  14.  

Resultado:
Código
  1. $ sh test.sh oneclic
  2. Name Serveer oneclic.cat, OCUPADO
  3. Name Serveer oneclic.es, OCUPADO
  4. Name Serveer oneclic.com, OCUPADO
  5. Name Serveer oneclic.net, OCUPADO
  6. Name Serveer oneclic.org, OCUPADO
  7. Name Serveer oneclic.eu, OCUPADO
  8. 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


En línea

Rav3nS

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Tratamiento de variables Script Linux
« Respuesta #2 en: 12 Junio 2016, 02:35 am »

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 línea

Echizen

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Tratamiento de variables Script Linux
« Respuesta #3 en: 12 Junio 2016, 02:51 am »

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
  1. 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
  1. 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...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines