#!/bin/bash # Función para mostrar fácilmente el menú de ayuda ayuda() { echo " ********************************* * MENU CLASE SMR-A * ********************************* [1] Mostrar la carpeta donde estoy situado [2] Mostrar las 10 últimas lineas de fichero /etc/passwd [3] Crear un usuario nuevo [4] Mostrar la fecha y la hora [5] Mostrar el calendario anual [6] Mostrar menú [7] Limpiar pantalla [8] Salir " } # Función que pide entrada de usuario y devuelve esta misma entrada # a la llamada original getInput() { read -p "Opción: " CHOICE echo $CHOICE } # Función "main", ejecuta un bucle infinito en el que pide entrada # de usuario para ejecutar cualquiera de las opciones contempladas en el # Switch, mostrando un error si no se introduce un número válido main() { ayuda while true; do CHOICE=$(getInput) case "$CHOICE" in 1) # Muestra la carpeta actual echo "Te encuentras en la carpeta: $(pwd)" ;; 2) # Muestra las últimas 10 líneas de /etc/passwd echo "$(tail -n10 /etc/passwd)" ;; 3) # Pedimos el nombre de usuario y ejecutamos un simple useradd echo "Qué nombre debería tener el usuario?" read -p "Nombre: " NOMBRE sudo useradd -m $NOMBRE echo "Usuario añadido!" ;; 4) # Muestra la fecha echo "La fecha actual es $(date)!" ;; 5) # El más interesante de todos, como tenía que esperar 7 segundos antes de mostrar # el calendario, decidí utilizar un bucle "for" haciendo uso de "printf" con # carácteres de Carriage Return (\r) para poder simular una barra de espera antes # de ejecutar el comando final SEPARADOR="." for ((i = 0; i < 7; i++)); do printf "El calendario actual es$SEPARADOR\r" SEPARADOR+="." sleep 1 done cal -y ;; 6) # Llama a la función de ayuda para mostrar el menú otra vez ayuda ;; 7) # Llama a la función de ayuda para mostrar el menú otra vez pero primero limpiando # la pantalla clear ayuda ;; 8) # Sale del programa echo "Adiós!" exit ;; *) echo "Entrada inválida" ;; esac done } # Iniciar el programa main