educatica!

educación, informática y demás

Clases de informática, GNU/Linux bash, Informática, Shell scripts

Ejemplos con if

Ejemplo 01

El comando que nosotros usemos en el if será el que nos permita comprobar si se cumple la condición que necesitamos comprobar. Si el comando se ejecuta correctamente, entonces se ejecutará el cuerpo de comandos del then. Si el comando no se ejecuta correctamente, entonces se ejecutarán los comandos del else.

Esto es un ejemplo, nosotros tendremos que elegir un comando u otro para utilizarlo como condición del comando if en función de lo que queramos hacer.

Evitar que se muestre salida del comando de condición

Parámetro como valor de usuario

Vamos a modificar nuestro script para que reciba el nombre del usuario para el que queremos comprobar si existe por parámetro, en el primer parámetro del script.

Comprobamos conexión con un host

Vamos a cambiar el script para que reciba por parámetro el nombre o dirección IP de un host. Comprobaremos si tenemos conexión a él con el comando ping.

Solo hemos cambiado el nombre de la variable y el comando que utilizamos como condición del if.

Aquí podríamos, a estas alturas, cambiar los mensajes…

Si no hay conexión guarda un mensaje en un fichero de log…

Si no hay conexión deberá guardar un mensaje indicando que no hay conexión con ese host y la fecha y hora actual. Esto lo guardará en el fichero errores.log dentro del directorio actual.

Si no hay conexión salimos…

Si no hay conexión con el host, mostramos un mensaje de error y terminamos la ejecución con un valor de retorno de error.

Comparar cadenas, enteros y ficheros.. comando test

Test es un comando que permite comprobar tipos de ficheros y comparar valores, tanto de cadenas de texto como valores enteros.

Nosotros podemos ejecutar test y pasarle la expresión que queramos comprobar. Si la expresión se cumple devuleve un valor de ejecución correcto. Si no se cumple devuelve un valor de retorno incorrecto. Así que podemos usarlo en nuestros if.

Si ejecutamos test con una expresión que no se cumple devolverá un valor distinto de cero.

Esto para que vale, para que podamos utiliar el comando test por ejemplo para comparar o comprobar cadenas de texto, números enteros y tipos de ficheros en un comando if.

Con test podemos comparar y comprobar valores de cadenas de texto.

Podemos comparar valores numéricos enteros.

Tipos de ficheros

Vamos a crear un pequeño script que comprueba el tipo de ficheros

El script funciona, pero quizá se hace un poco tedioso tener que escribir test una y otra vez. Estaría bien poder utilizar otra forma más reducida de escribir el comando test.

Para ello vamos a utilizar los corchetes.

Cuidado con los espacios de separación de los corchetes.

Vamos a comprobar también si el fichero es un fichero de bloques o un fichero de caracteres especiales.

if… elif…

Podemos utilizar esta estructura porque las condiciones son mutuamente excluyentes. Un fichero si es de un tipo, no puede ser de los otros.

Obteniendo la salida de un comando

Podemos utilizar $(CMD) para obtener la salida de un comando como si de una variable se tratara. La shell sustituirá toda la cadena $(CMD) por la salida de la ejecución de este comando.

Podemos utilizar esta variable dinámica en cualquier parte del script. Si vamos a utilizarla varias veces, podemos guardarla en una variable.

Consultando datos de un usuario

Este script, que llamaremos userData.sh, recibirá por parámetro el nombre de un usuario. Para el usuario dado mostraremos el UID, GID, ruta del directorio personal y de la shell que utiliza el usuario en el sistema. Toda esta información está en el fichero /etc/passwd.

Si no se pasa parámetro, se debe mostrar un mensaje de error adecuado y terminar la ejecución del script con un valor de retorno de error.

Si el usuario pasado por parámetro no existe, se debe mostrar un mensaje de error adecuado y terminar la ejecución del script con un valor de retorno de error.

Todo esto es la comprobación o control de errores en tiempo de ejecución.

Ahora vamos a analizar los comandos que me pueden dar la información que yo voy a usar en mi script.

Funciones…

Vamos a crear un par de funciones nuevas…

Todo esto son funciones, el cuerpo del programa sería el siguiente:

El cuerpo de código del script se reduce a la comprobación de errores y a ejecutar dos funciones.

Leyendo el nombre de usuario por teclado

Repetir la petición de datos al usuario por teclado

Repetimos el proceso mientras el usuario inserte datos..

Comprobar si hay conexión con un servidor…

Comprobamos si hay conexión con el servidor. Mientras no haya conexión, mostramos un mensaje de error, esperamos 1 segundo y volvemos a comprobar.

No entra en el bucle, porque la condición no se ha cumplido. La condición es que no se ejecute correctamente (!) el comando ping.

Para comprobar que funciona «quitamos el cable de red» y lo ponemos en medio de la ejecución del bucle.

Deja un comentario

Tema creado por Anders Norén