Add extra class exercises

This commit is contained in:
raul 2025-01-07 13:36:37 +01:00
parent cc335ca6a5
commit d73ffd06b2
Signed by: raul
GPG Key ID: C1AA797073F17129
3 changed files with 126 additions and 0 deletions

17
class/scripts1/script1.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
# Ya se que no hace falta declarar variables en Bash
# pero es costumbre
declare NUM1
declare NUM2
# Leemos entrada de usuario y le asignamos a las variables
# anteriormente declaradas
read -p "Número 1: " NUM1
read -p "Número 2: " NUM2
# Comparamos si las dos variables son iguales o no
if [[ $NUM1 != $NUM2 ]]; then
echo "El numero $NUM1 es distinto a $NUM2"
else
echo "Los dos números introducidos son iguales ($NUM1)"
fi

19
class/scripts1/script2.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
# Declaramos las dos variables asignándoles el primer y segundo parámetro del script
NUM1=$1
NUM2=$2
# Comprobamos si cualquiera de las variables está vacía, indicando que el usuario
# no nos ha proporcionado suficientes parámetros, alertamos el error y salimos del
# programa
if [[ $NUM1 == "" || $NUM2 == "" ]]; then
echo "Entrada inválida, quiero dos números por parámetros"
exit
fi
# Volvemos a realizar la comprobación de igualdad entre las variables
if [[ $NUM1 != $NUM2 ]]; then
echo "El numero $NUM1 es distinto a $NUM2"
else
echo "Los dos números introducidos son iguales ($NUM1)"
fi

90
class/scripts1/script3.sh Executable file
View File

@ -0,0 +1,90 @@
#!/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