terminal

Aprende shell script con ejemplos (III)

Bueno, ya hemos visto los dos primeros post sobre shell script y vamos a profundizar en cosas ya vistas y otras nuevas.

1. Volviendo a las funciones

Ya vimos en un post anterior los fundamentos de las funciones. Las funciones no solo nos van a servir para hacer los programas más ordenados, sino para reusar el código o incluso hacer recursividad (aunque con shell script no es lo suyo).

Veamos ejemplos de un uso algo más avanzado sobre funciones:

shell script funciones

No se si te has percatado en el ejercicio anterior, pero TATACHAN nunca aparecerá por pantalla. Si te das cuenta, la funcion salte hace que el script termine en ese mismo instante.

Una característica fundamental de las funciones son los argumentos. Los argumentos nos sirven para parametrizar las funciones y que estas sean más genéricas.
A continuación se muestra un ejemplo de funciones con argumentos:

shell script funciones

Si te das cuenta, la función mostrar admite un parámetro que es $1. Si se le quisiesen pasar dos parámetros serían $1 para el primero y $2 para el segundo (y así sucesivamente). Esta función de momento solamente muestra el parámetro por pantalla pero podría hacer muchas más cosas con él.

Realiza un script con una función factorial que muestre por pantalla el factorial del número que se le pasa como parámetro. No utilices recursividad, utiliza los bucles vistos con anterioridad.

2. Argumentos pasados a un shell script.

Los argumentos son los parámetros que le pasamos a un comando para parametrizarlo. Por ejemplo, cuando tecleo ps -ef, el «-ef» son los parámetros que le paso a ps para que realice lo que yo quiero. También cuando ejecuto mv fichero.txt fichero2.txt, a mv le paso dos parámetros que son el nombre del fichero a renombrar y el nombre que queremos ponerle.

Dentro de un script podemos referenciar los argumentos pasados al mismo mediante las siguientes variables:

  • $0 nombre del script
  • $1 primer argumento
  • $2 segundo argumento
  • Y así sucesivamente…
  • $# numero de argumentos pasados
  • $* todos argumentos pasados
  • Para ver cómo funcionan los parámetros veamos un programa que comprueba si se le ha pasado al menos un parámetro:

    shell script parámetros

    Como puedes ver al principio del script compruebo con [ -z «$1» ] que al menos existe el primer parámetro y en caso contrario muestra los mensajes que ves y sale con el comando exit. De esa manera termina y no se sigue ejecutando el script.

    El script anterior puede servirnos para crear un script algo más complejo como el siguiente:

    shell script ejemplo backup

    Como puedes ver, he reutilizado el script anterior para hacer uno más completo. Este script establece unos directorios origen y destino del backup y un fichero (FICH) donde se va a realizar el backup el cual tiene como nombre backup- y la fecha en que se realizó.

    Copia y ejecuta el código anterior. Comprueba que funciona y modifica el código para cambiar el nombre del fichero y que almacene los backup en otro directorio.

    3. Interacción con el usuario.

    Los script por regla general no suelen ser muy interactivos pero en algunos casos como en los menús es necesario pedir al usuario que elija una opción, pedirle información, etc.

    Esas lecturas interactivas con los usuarios las hacemos mediante la orden read. Veamos un ejemplo muy sencillo de script con una orden read:

    #!/bin/bash
    echo Por favor, introduzca su nombre
    read NOMBRE
    echo " Hola $NOMBRE, ¿cómo estas? " 
    

    Incluso si quieres, puedes poner varias lecturas en una misma orden read:

    #!/bin/bash
    echo Por favor, introduzca su nombre y apellido
    read NOMBRE APELLIDO
    echo " Hola $NOMBRE $APELLIDO, ¿cómo estas? " 
    

    Existe una forma de lectura de variables un poco más profesional y es meterle la opción -n.

    echo -n «Introduzca un parámetro :»
    read VAR
    echo «El valor del parámetro es $VAR»

    De esta manera lee el parámetro en la misma línea que escribe el texto y no en la siguiente.

    Si te ha gustado este post o lo has encontrado interesante no dejes de continuar aprendiendo shell script en la cuarta entrega.

    One thought on “Aprende shell script con ejemplos (III)

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada.

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.