bash-exercises/class/scripts1/script3.sh

91 lines
2.7 KiB
Bash
Raw Normal View History

2025-01-07 13:36:37 +01:00
#!/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