educación, informática y demás

2405 - Scripts GNU/Linux

Sentencias case

Con estas sentencias podemos elegir que acción realizar en base a un valor, habitualmente almacenado en una variable o que viene como resultado de una función o ejecución de comando.

Nosotros lo vamos a utilizar habitualmente con una variable que almacenará un dato. En función del valor de ese dato, podremos realizar unas acciones u otras.

chooseOption.sh

Este script recibirá por parámetro la opción que quiera realizar el operador. Las opciones válidas son: u,g,p,d,h,w.

Control de errores: Que nos pasen algo.

  • Si el script recibe una u, mostrará una lista con el nombre de los usuarios del sistema que utilicen como shell /bin/bash.
  • Si el script recibe una g, mostrará una lista con el nombre de los grupos de usuarios del sistema.
  • Si el script recibe una p, mostrará una lista con los procesos que no estén ejecutados por root.
  • Si el script recibe una d, mostrará la fecha actual del sistema.
  • Si el script recibe una h, mostrará el contenido del directorio /home y después mostrará la ocupación de este directorio completo de forma resumida y en un formato comprensible por humanos
  • Si el script recibe una w, mostrará los usuarios conectados al sistema ahora mismo.

Solución

Ahora lo rellenamos

Versión 2

Esta bien, pero nos gustaría solicitar al usuario por teclado la operación a realizar.

Versión 3

Esta bien, pero nos gustaría que el script solicitara al usuario operaciones a realizar mientras el usuario inserte alguna operación. Si el usuario no inserta ninguna operación, es decir pulsa Enter sin insertar valor de entrada, entonces el script terminará de forma correcta.

Ufff… esto duele. Hay que utilizar funciones: facilitan la reutilización de código, facilitan la comprensión del código y la modificación posterior.

Versión 4

Mola, pero ¿cómo sabe el usuario que operaciones tiene disponibles?. Muestra un menú de opciones disponibles al usuario para que sepa que opciones tiene disponibles. Este menú de opciones debe mostrarse siempre antes de solicitar valores de entrada por teclado.

También debemos permitir que el usuario pueda observar el resultado de la operación con calma (es algo que te lo va a pedir el cuerpo)

Esto está bien, mola, pero se podría pulir un poquito más. Siempre que pedimos una operación al operador (getOption) tenemos que mostrar antes el menu (showMenu). Si realizamos esta llamada dentro de getOption, evitamos posibles errores humanos y el código queda más limpio.

Ahora el código principal del script quedaría así

Vamos a liarla…

Vamos a intentar mostrar los usuarios en varios elementos por línea. Ufff.. esto se sale un poco, al menos ahora mismo, de nuestras manos, pero ahí queda:

Dejar una respuesta