Para que una secuencia de comando para ser muy útil, tendrá que ser capaz de probar las condiciones de variables. La mayoría de los lenguajes de programación y script tienen algún tipo de si / expresión de los demás y también lo hace el shell Bourne. A diferencia de otros idiomas, los espacios son muy importantes cuando se utiliza un caso de declaración.Vamos a hacer un simple script que le pedirá un usuario una contraseña antes de permitir que continuara. Esto obviamente no es cómo se llevaría a cabo dicha seguridad en un sistema real, pero va a hacer un buen ejemplo del uso de if y else declaraciones.
#!/bin/sh # This is some secure program that uses security. VALID_PASSWORD="secret" #this is our password. echo "Please enter the password:" read PASSWORD if [ "$PASSWORD" == "$VALID_PASSWORD" ]; then echo "You have access!" else echo "ACCESS DENIED!" fi
Recuerde que el espacio es muy importante en la sentencia if. Observe que la terminación de la sentencia if es fi .Usted tendrá que utilizar el fi declaración de despedir a un si o no usar usar una cosa así. También puede reemplazar los "==" con "! =" Para probar si las variables no son iguales. Hay otras señales que usted puede poner en su lugar de los "==" para otros tipos de pruebas. La siguiente tabla muestra las diferentes expresiones permitidas.
Comparaciones:-eq | igual a |
-ne | no es igual a |
-lt | menos que |
-le | menos de o igual a |
-gt | más que |
-ge | mayor que o igual a |
Operaciones del archivo:
-s | fichero existe y no está vacío |
-f | fichero existe y no es un directorio |
-d | El directorio |
-x | archivo es ejecutable |
-w | archivo es escribible |
-r | archivo es legible |
Vamos a tratar de usar un par de ellos en un script. La siguiente secuencia de comandos le pedirá un nombre de usuario, si no hay un archivo que existe con el nombre "username_DAT", el guión le pedirá al usuario para su edad, será a continuación, asegúrese de que tengan edad suficiente para utilizar este programa y entonces se escribirá su edad en un archivo con el nombre "username_DAT". Si el archivo ya existe, se acaba de mostrar la edad del usuario.
#!/bin/sh # Prompt for a user name... echo "Please enter your name:" read USERNAME # Check for the file. if [ -s ${USERNAME}_DAT ]; then # Read the age from the file. AGE=`cat ${USERNAME}_DAT` echo "You are $AGE years old!" else # Ask the user for his/her age echo "How old are you?" read AGE if [ "$AGE" -le 2 ]; then echo "You are too young!" else if [ "$AGE" -ge 100 ]; then echo "You are too old!" else # Write the age to a new file. echo $AGE > ${USERNAME}_DAT fi fi fi
Ejecutar este programa un par de veces. Primero ejecutarlo y póngale el nombre de usuario "john". Cuando se pide una edad, entrar en la era "1". Note que va a decir que usted es demasiado usted y luego salir. Ahora ejecute el programa de nuevo con el nombre "Juan" y la edad 200. Esta vez el guión le dirá que usted es demasiado viejo y salir. Ahora ejecuta el script de nuevo con el nombre de "Juan", introduzca la edad de 30 años El script finaliza normalmente en esta ocasión, el programa crea un archivo llamado "john_DAT", que contiene el texto "30". Finalmente ejecutar el programa una vez más y darle el nombre "Juan". Esta vez no le pedirá que introduzca una edad, sino que leerá la edad a partir de un archivo y decir "Estás 30 años!".
Introdujimos otra cosa nueva en este guión. En la línea 10 del archivo, vemos el código:
EDAD = `cat $ {username} _DAT`
Así es como se ejecuta un comando y poner el texto de salida del comando en una variable. El comando unix gato lee el archivo con nombre $ {username} _DAT y la envía a la consola. En lugar de poner a la consola en nuestro script, envolvemos el comando con el carácter ` , esto pone el texto en nuestra variable EDAD.
Puede probar múltiples expresiones a la vez utilizando el || operador (o) o el && (y) del operador. Esto le puede ahorrar de escribir código adicional para anidar sentencias if. El código anterior ha anidado una sentencia if donde comprueba si la edad es mayor que o igual a 100. Esto podría ser cambiado, así mediante el uso de elif (más si). La estructura de elif es la misma que la estructura de si , vamos a utilizar en un ejemplo a continuación. En este ejemplo, vamos a comprobar para ciertos rangos de edad. Si usted es menor de 20 o mayor de 50, se encuentra fuera del rango de edad. Si tienes entre 20 y 30 usted está en sus años 20 y así sucesivamente.
#! / Bin / sh # Pedirá un nombre de usuario ... echo "Por favor, introduzca su edad:" leer EDAD si [ "$ EDAD" - lt 20 ] || [ "$ EDAD" - ge 50 ]; entonces echo ". En este momento, usted está fuera del rango de edad" elif [ "$ EDAD" - ge 20 ] && [ "$ EDAD " - lt 30 ]; entonces echo "Usted está en sus 20s" elif [ "$ EDAD" - ge 30 ] && [ "$ EDAD" - lt 40 ]; entonces echo "Usted está en sus 30s" elif [ "$ EDAD " - ge 40 ] && [ "$ EDAD" - lt 50 ]; entonces echo "Usted está en sus 40s" fi
No hay comentarios:
Publicar un comentario