educación, informática y demás

Shell scripts

Bash shell script. Funciones

Tenemos un script simple que muestra información en pantalla. Ahora nos piden que, además de mostrar la información en pantalla añada esa información al final de un fichero: usuarios.log.

Lo que hacemos es copiar y pegar los comandos que muestran la información y añadir las redirecciones.

Si nos fijamos las líneas de código son las mismas, exactamente las mismas. Esto nos lleva a tener los mismos comandos repetidos, lo cual dificulta el mantenimiento del script. Si hay que hacer cualquier cambio tendremos que cambiarlo en dos puntos distintos.

Ahora supongamos que, además, tenemos que guardar la información del último usuario consultado en un fichero llamado lastUser.log, solo la del último usuario.

Tendremos que volver a copiar y pegar todo el código que genera la información.

Una posible solución es crear un script auxiliar que tan solo muestre en pantalla la información y desde este script ejecutar o llamar tres veces a dicho script con distintas redirecciones.

De hecho este script, que hemos llamado showUserInfo es, precisamente, el script que teníamos al inicio.

Ahora tan solo tenemos que ejecutar desde nuestro script tres veces el script showUserInfo.sh pasando como parámetro el nombre del usuario para el que queremos mostrar la información.

Vamos a probarlo..

Vamos a comprobar los ficheros

En este caso hemos creado un script auxiliar para poder aprovechar, reutilizar, un conjunto de comandos y ejecutarlos varias veces dentro del mismo script. Podríamos haber creado una función.

Funciones

En el contexto de scripts, una función es un conjunto de comandos a la que se le da un nombre que la identifica. Este conjunto de comandos se ejecuta como un todo utilizando el identificador de la función.

Es decir, una función es como un pequeño script dentro de un script.

¿Cómo se declara una función?

Para declarar una función utilizamos la palabra reservada function seguida del nombre de la función y de dos paréntesis (). Los comandos que conforman la función se escriben entre llaves que delimitan el cuerpo de la función.

El cuerpo de la función son, precisamente, los comandos que se ejecutarán al ejecutar la función.

En nuestro caso la función showUserInfo debería mostrar la información del usuario en pantalla. Vamos a copiar los comandos que muestran información del usuario cuyo nombre se almacena en la variable usuario.

Una función es como un miniscript dentro de un script.

Ahora, en lugar de ejecutar un script externo para que muestre información de un usuario, lo que vamos a hacer es llamar o ejecutar nuestra función, que al final es como un miniscript dentro del script.

Vamos a invocar o llamar a la función. Para ello lo único que hay que hacer es escribir el nombre de la función.

Cada vez que ejecutemos la función showUserInfo se ejecutan los comandos del cuerpo de la función en secuencia, como si fuera un mini script.

Vamos a probarlo

chekHost.sh

Analiza qué hace esta función…

Vamos a probarlo

Una mejora

Dejar una respuesta