9.5.6.- Uso de funciones

Una función es una parte de un script que realiza una subtarea específica y que puede ser llamada por su nombre desde otras partes del script. Las funciones se definen colocando unos paréntesis () tras el nombre de la función y rodeando las líneas que la conforman entre llaves {}:

funciones_1

La palabra clave function puede preceder opcionalmente al nombre de la función. En cualquier caso, se llamará a la función por su nombre.

Las funciones son útiles para la creación de scripts modulares. Por ejemplo, si el script necesita hacer una decena de cálculos diferentes podemos situar cada cálculo en una función y, después, llamarlas a todas secuencialmente. El siguiente ejemplo es un sencillo programa que copia un fichero y aborta con un mensaje de error en caso de que el fichero ya exista. Este script recibe ambos nombres de fichero (objetivo y destino) y debe pasarlos a las funciones:

funcion_ejemplo1

 Por ejemplo, grabamos el script como safercp y lo utilizaremos de la siguiente manera, suponiendo que el fichero original.txt exista y que destino.txt no.

safercp_ejemplo1

La primera ejecución tiene éxito por que destino.txt no existe. Cuando el comando se ejecuta por segunda vez, el fichero destino si existe y el programa finaliza con un mensaje de error.

safercp_ejemplo2

Las funciones no se ejecutan directamente en el orden en el que aparecen en el script,  sólo se ejecutan cuando se las llama en el cuerpo principal del script.  Los scripts de consola son herramientas útiles, pero crear scripts eficaces requiere práctica. Este ejercicio práctico nos muestra un script de consola que proporciona la opción de leer todos los ficheros (con nombres terminados en .txt) del directorio actual con el comando less. Veamos los pasos a seguir para crear este script:

  1. Entramos al sistema Linux como usuario normal.
  2. Desde la consola inicie otra consola con el comando xterm.
    ejemplo_2También podemos iniciarla desde el sistema de menús del entorno de escritorio.
  3. Iniciamos nuestro editor favorito y crearemos un fichero que llamaremos testscript.
  4. Escribimos las siguientes líneas:
    ejemplo_4
    Tenemos que asegurarnos de escribir todos los caracteres correctamente, cualquier error puede hacer que el script no funcione correctamente. Un error típico es escribir los acentos graves (`) como si fueran comillas simples (‘).
  5. Guardamos el fichero y salimos del editor.
  6. Vamos a añadirle el bit de ejecución a nuestro script recién creado.
    ejemplo_6Observamos que nuestro script testscript a cambiado de color, esto muestra que dicho script está en modo ejecución.
  7. Escribimos ./testscript para ejecutar nuestro script. Si no hubiera ningún fichero de texto (*.txt) en el directorio actual, el script nos mostrará un mensaje de error; en cambio si encontrara algún fichero, nos mostraría la opción de visualizar cada uno por turnos a través de less.
    ejemplo_7

Este script de ejemplo es muy limitado, pero nos muestra varias características importantes de los script, como la asignación de las variables y su uso, los bucles for y las expresiones condicionales if/then.