Cuando utilizamos parámetros en un shell script no sabemos qué valores pasará el usuario al script en el momento de ejecutarlo. De hecho, no sabemos si ni siquiera pasará valores.
Los parámetros son muy útiles a la hora de crear shell scripts que podamos utilizar en distintos escenarios, tan solo cambiando los parámetros que se les pasan. Por ejemplo, si creamos un script de copia de seguridad del directorio personal de un usuario. Si recibimos por parámetro el nombre del usuario y la ruta de su directorio personal, el script realizará la copia de seguridad de los ficheros del usuario que le pasemos por parámetro. Así podremos aprovechar el script, ejecutándolo varias veces con datos de otros usuarios, sin tener que cambiar ni una línea de código.
Sin embargo, es el usuario que ejecuta el script el que debe insertar los parámetros que necesita el script para funcionar. No solo debe introducirlos, sino que esos parámetros deberán ser válidos para que el script realice su función. Pero no sabemos qué hará el usuario y no podemos fiarnos de que inserte los datos correctos como parámetros.
Por eso es necesario realizar una comprobación previa de los valores que se pasan por parámetro y de los requisitos, necesidades, que tenga el script para poder funcionar. Por ejemplo, puede ser necesario que un script sea ejecutado por root o que el valor pasado en el primer parámetro identifique a un usuario que exista en el sistema.
En el siguiente vídeo se explica como realizar esta comprobación de necesidades o requisitos mínimos del script para evitar situaciones de error. Para ello, se hará uso del comando if como sentencia condicional, explicándose brevemente su uso y aplicación a algunas comprobaciones típicas en scripts.
¿Cómo hacer comprobaciones?
Para hacer comprobaciones necesitamos utilizar sentencias o comandos condicionales. Estos comandos, como ya se ha explicado en otro apartado, comprueban una condición y solo si se cumplen ejecutan una serie de comandos.
Tenemos tres tipos de estructuras o formas de uso del comando if en Bash:
- if..then
- if condición then cuerpo_del_if fi
- if..then..else.
- if condición then cuerpo_del_if else cuerpo_del_else fi
- if..then..elif..else.
- if condición1 then cuerpo_del_if1 elif condición2 then cuerpo_de_if2 elif condicion3 … else cuerpo_del_else fi
La idea es realizar las comprobaciones antes de ejecutar los comandos que realicen la función del script.
De esta forma, lo primero que hacemos es comprobar si se cumplen los requisitos o necesidades del script en orden. Si no se cumple alguno de los requisitos, entonces mostramos un mensaje de error y terminamos con la ejecución del script con el comando exit.
Los requisitos más habituales son:
- Que se pase parámetro. Para ello comprobamos si el valor del parámetro está vacío. Si está vacío, significa que no se ha pasado parámetro y por tanto terminamos la ejecución.
- Que el valor del parámetro sea válido. Dependiendo del parámetro tendremos que hacer una u otra cosa. La mayoría de las veces podremos comprobarlo con comparaciones (test) o bien ejecutando algún comando usando el valor pasado y comprobar si el comando se ha ejecutado correctamente o no.
- Algún requisito más. Por ejemplo, que el script lo ejecute un usuario concreto, como root. Podemos utilizar test y comprobar si el uid del usuario coincide con el de root. O si existe un directorio necesario para que funcione el script. Si no existe, entonces lo creamos.
Como veis hay muchas opciones de requisitos o necesidades previas de un scrpt que debemos ser capaces de comprobar y resolver en caso necesario.