Shell Script con bash

Los shell scripts son ficheros donde escribimos una serie de comandos (cualquiera de los que hemos visto en otras entradas) para que sean ejecutados. Aunque su sintaxis puede llegar a ser muy compleja y deberíamos entrar en aspectos de programación para entenderla claramente, en esta entrada explicaremos de manera resumida algunas de sus características esenciales para que podamos entenderlos y utilizarlos mínimamente (si queremos profundizar más en ellos, podemos recurrir al manual del bash).

En el presente articulo aprenderemos muy por encima la estructura básica de estos Scripts.

La primera línea del shell script debe especificar el intérprete de comandos que se utiliza:

#!/bin/bash

Después de esta línea ya podemos empezar a escribir los comandos que queremos ejecutar, uno en cada línea. Como en todo lenguaje de programación, podemos utilizar variables, estructuras condicionales y bucles. Para declarar una variable utilizaremos la siguiente sintaxis:

nombreVariable=contenido

Si el contenido es una cadena de caracteres, debemos ponerlo entre comillas, si es un número, no es necesario y si queremos guardar en la variable la salida de un comando, deberíamos ponerlo entre caracteres. Para referirnos al contenido de la variable en otras instrucciones, siempre debemos preceder al nombre con el carácter “$”.

Para las instrucciones condicionales podemos utilizar las siguientes estructuras:

if condición; then
   instrucciones

else
   instrucciones

fi

donde condición puede hacer referencia a un archivo, realizar alguna operación de comparación aritmética (entre caracteres “(( ))”), etc. De especial utilidad es el comando test, que nos permite efectuar comprobaciones de archivos, directorios, etc. y nos devuelve un booleano. De este modo, por ejemplo, si quisiéramos realizar una acción u otra según si existiera un determinado archivo, podríamos utilizar la siguiente estructura:

if test -f /etc/inittab; then
   echo "El fichero inittab existe."

else
   echo "El fichero inittab NO existe."

fi

Otra estructura condicional es la de selección:

case palabra in
   caso1)
      instrucciones ;;
   caso2)
      instrucciones ;;
   *)
      instrucciones
esac

En esta estructura se compara palabra con caso1, caso2, etc., hasta encontrar la que coincida, en la que se ejecutarán las instrucciones del caso. Si no se encontrara ninguna, se pasaría a la sección *), que es opcional. Esta estructura puede irnos muy bien cuando, por ejemplo, queramos que un determinado script realice unas acciones u otras según el parámetro que le pasemos. Los parámetros los podemos referenciar a partir de $1 para el primero, $2 para el segundo y así consecutivamente.

Para los bucles podemos utilizar alguna de las siguientes estructuras:

#BUCLE TIPO FOR
for i in lista;
do
   instrucciones
done

#BUCLE TIPO WHILE
while condición;
do
   instrucciones
done

Naturalmente, antes de poder ejecutar un shell script debemos dar el permiso de ejecución al fichero correspondiente (comando chmod 750 nombreFichero).

Como vemos en este último ejemplo, para escribir comentarios en los shell scripts podemos utilizar el carácter “#” seguido del comentario que queramos. Éste será válido hasta final de línea.

Nota: El comando fc nos permite, igual que los shell scripts, escribir una serie de comandos para que se ejecuten pero sin tener que guardar el archivo.

Fuente: UOC OpenCourseWare

Para mayor información respecto a la construcción de script, consulta las páginas del manual del intérprete de comandos (man bash) o visita el siguiente enlace:

Escritura de Scripts en Shell

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: