From d73ffd06b226fb794830f35643cd08a2e4f47951 Mon Sep 17 00:00:00 2001 From: raul Date: Tue, 7 Jan 2025 13:36:37 +0100 Subject: [PATCH] Add extra class exercises --- class/scripts1/script1.sh | 17 ++++++++ class/scripts1/script2.sh | 19 +++++++++ class/scripts1/script3.sh | 90 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100755 class/scripts1/script1.sh create mode 100755 class/scripts1/script2.sh create mode 100755 class/scripts1/script3.sh diff --git a/class/scripts1/script1.sh b/class/scripts1/script1.sh new file mode 100755 index 0000000..2e62e7e --- /dev/null +++ b/class/scripts1/script1.sh @@ -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 diff --git a/class/scripts1/script2.sh b/class/scripts1/script2.sh new file mode 100755 index 0000000..79189dd --- /dev/null +++ b/class/scripts1/script2.sh @@ -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 diff --git a/class/scripts1/script3.sh b/class/scripts1/script3.sh new file mode 100755 index 0000000..834ca45 --- /dev/null +++ b/class/scripts1/script3.sh @@ -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