Cuando hablamos de consideraciones a tener en cuenta al escribir shell scripts uno de los puntos era proveer documentación. Este recurso puede resultar sumamente útil cuando otra persona los ejecute. El uso de shell scripts con los tips que compartiremos en este post hará que los mismos sean más fáciles de utilizar.
Uso de shell scripts: incluir instrucciones
En su momento hablamos de lo útil que resulta el emplear los man pages, la herramienta info, y la opción --help
. Nuestros scripts, como cualquier otro programa, puede algo similar para ilustrar la forma correcta de uso. Tomaremos como ejemplo el script que desarrollamos en nuestro post anterior, agregando contenido al principio. Nuevamente, les invito a tratar de identificar las líneas que hemos añadido:
#!/bin/bash # Instrucciones de uso INST_USO="$(basename "$0") a b -- Este programa muestra el o los archivos dentro de un directorio donde se localiza un patrón de búsqueda ingresado. \n Donde:\n a representa el patrón de búsqueda. El mismo debe ser el primer argumento.\n b representa el directorio donde se realizará la búsqueda. El mismo debe ser el segundo argumento." # Si no se ingresan los dos argumentos necesarios, interrumpir la ejecución: if [ $# -ne 2 ]; then echo -e $INST_USO exit 1 else # Patrón de búsqueda PATRON=$1 # Directorio en donde buscar DIRECTORIO=$2 # Búsqueda grep -irq $PATRON $DIRECTORIO/* if [ $? -eq 0 ]; then LUGAR=$(grep -irl $PATRON $DIRECTORIO/*) echo "El patrón $PATRON fue localizado en $LUGAR." else echo "No se encontró el patrón $PATRON en los archivos presentes dentro de $DIRECTORIO." fi fi
Veamos algunos puntos importantes:
- Si el script recibe una cantidad de argumentos diferente a dos, se interrumpirá su ejecución. A continuación se mostrará un mensaje explicando el uso correcto del mismo.
- El uso de la opción
-e
del comandoecho
permite que \n se interprete como un salto de línea.
En la Fig. 1 podemos ver dos ejecuciones del script (una correcta y otra no) junto con su código de salida (0 en el primero y 1 en el siguiente):
Espero que este post les haya resultado de utilidad. ¡Nos leemos en breve!