educación, informática y demás

Shell scripts

checkFile.sh – Versión 2.0

Vamos a modificar el script checkFile.sh de forma que ahora vamos a comprobar si el fichero es un fichero, un directorio, un fichero especial de bloques, un fichero especial de caracter o cualquier otro tipo de fichero.

El resto de comprobaciones (control de errores) y funcionalidad la dejamos como está.

Si el fichero es un fichero de bloques o un fichero de caracteres, indicamos el tipo de ficheros que es y mostramos información extendida de permisos propietario y grupo de dicho fichero. Si es otro tipo de fichero, mostramos un mensaje indicando que el tipo de fichero no es conocido y mostramos información de permisos propietario y grupo de dicho fichero.

Análisis

Si nos fijamos la estructura de control que debemos implementar, utilizar, está basada en realizar una serie de comprobaciones de condición contiguas, una detrás de la otra.

  • Si es un fichero entonces hacemos algo con el fichero.
  • Si es un directorio entontes hacemos algo con el directorio.
  • Si es un fichero de bloque, hacemos otra cosa.
  • Si es un fichero de caracter, hacemos otra cosa
  • Si no es ninguno de los anteriores hacemos otra cosa distinta.

Podríamos pensar en abordar la solución utilizando una secuencia de comandos if dónde comprobaramos cada una de las condiciones. Pero, tenemos dos problemas.

  1. Todas las condiciones son mutuamente excluyentes. Esto no es un problema en sí, pero utilizar una secuencia de ifs, cuando las condiciones son mutuamente excluyentes nos llevará a que comprobemos todas las condiciones aun cuando solo se cumplirá una de ellas.
  2. ¿Cómo sabemos que no es ninguno de los tipos anteriores?. Tendríamos que realizar una comprobación con test muy grande, que incluyera que no se cumple ninguna de las condiciones anteriores.

La solución pasa por utilizar la estructura if..elif..else..fi.

Ayuda

Si tienes problemas con las sentencias de control de selección, if, repasa los contenidos proporcionados en educatica para sentencias de control if en bash shell script.

Hay un vídeo explicito sobre if..elif..else..fi en dicha página que explica cómo utilizar esta sentencia de control.

Solución

Dejar una respuesta