Ejercicios Prácticos de Scripting Bash: Aprende con Ejemplos

Ejercicios Prácticos de Scripting Bash

Múltiplo de Diez

Comprueba si un número introducido por el usuario es múltiplo de 10.

read -p "Introduce un número: " num
if (( num % 10 == 0)); then
  echo "$num es múltiplo de 10"
else
  echo "$num no es múltiplo de 10"
fi

Nombre Comienza con J

Verifica si un nombre introducido comienza con la letra ‘J’ mayúscula.

read -p "Introduce un nombre: " nombre
if [[ $nombre == J* ]]; then
  echo "El nombre '$nombre' comienza con la letra J mayúscula."
else
  echo "El nombre '$nombre' NO comienza con la letra J mayúscula."
fi

Mayor Altura

Determina la mayor altura entre tres alturas introducidas por el usuario.

read -p "Introduce la altura de la primera persona (en cm): " altura1
read -p "Introduce la altura de la segunda persona (en cm): " altura2
read -p "Introduce la altura de la tercera persona (en cm): " altura3

mayor=$altura1

if (( altura2 > mayor )); then
  mayor=$altura2
fi

if (( altura3 > mayor )); then
  mayor=$altura3
fi

echo "La mayor altura es: $mayor cm"

Días del Mes

Indica cuántos días tiene un mes introducido por el usuario.

read -p "Introduce el nombre de un mes: " mes
case "$mes" in
  "enero"|"marzo"|"mayo"|"julio"|"agosto"|"octubre"|"diciembre")
    echo "$mes tiene 31 días."
    ;;
  "abril"|"junio"|"septiembre"|"noviembre")
    echo "$mes tiene 30 días."
    ;;
  "febrero")
    echo "Febrero tiene 28 días (sin años bisiestos)."
    ;;
  *)
    echo "Mes no válido. Introduce el nombre en minúsculas y sin tildes."
    ;;
esac

Más de Diez Ficheros

Comprueba si hay más de diez archivos en el directorio actual.

cantidad=$(ls -1 | wc -l)  # Cuenta el número de archivos y directorios en la carpeta actual

if (( cantidad > 10 )); then
  echo "Hay más de 10 archivos en el directorio actual."
else
  echo "Hay 10 o menos archivos en el directorio actual."
fi

Menú con Opciones

Presenta un menú con opciones para ejecutar diferentes scripts.

DIRECTORIO="/home/TuNombre/apuntesTuNombre"
echo
echo "¿Qué script quieres ejecutar?"
echo "============================="
echo
echo "1. El script primero.sh"
echo "2. El script capicua.sh"
echo "3. El script parimpar.sh"
echo "4. Salir"
echo
read -p "Elige una opción (1/2/3/4): " opcion

case $opcion in
  1) source $DIRECTORIO/primero.sh;;
  2) source $DIRECTORIO/capicua.sh;;
  3) source $DIRECTORIO/parimpar.sh;;
  4) ;;
  *) echo "Opción no válida.";;
esac

Comprobar si es Número

Valida si la entrada del usuario es un número.

read -p "Introduce un número: " numero
if [[ $numero =~ ^[0-9]+$ ]]; then
  echo "Has introducido el número: $numero"
else
  echo "Has introducido algo que no es un número y es: $numero"
fi

Existe Usuario

Verifica si un usuario existe en el sistema.

read -p "Introduce el nombre de un usuario: " usuario
if [ `grep "^$usuario:" /etc/passwd` ]; then
  echo "$usuario es un usuario del sistema"
else
  echo "$usuario no es un usuario del sistema"
fi

Operación Aritmética

Realiza operaciones aritméticas básicas según la elección del usuario.

# Pedir dos números al usuario
read -p "Introduce el primer número: " num1
read -p "Introduce el segundo número: " num2

echo "=================================="
echo " ¿Qué operación aritmética quieres hacer?"
echo "=================================="
echo "1. SUMAR (NUM1 + NUM2)"
echo "2. RESTAR (NUM1 - NUM2)"
echo "3. MULTIPLICAR (NUM1 * NUM2)"
echo "4. DIVIDIR (NUM1 / NUM2) [División entera]"
echo "5. RESTO (NUM1 % NUM2)"
echo "6. Salir"
echo "=================================="
read -p "Elige una opción (1/2/3/4/5/6): " opcion

case $opcion in
  1) resultado=$((num1 + num2))
    echo "La suma es $resultado" ;;
  2) resultado=$((num1 - num2))
    echo "La resta es $resultado" ;;
  3) resultado=$((num1 * num2))
    echo "La multiplicación es $resultado" ;;
  4)
    if [ "$num2" -ne 0 ]; then
      resultado=$((num1 / num2))
      echo "La división es $resultado"
    else
      echo "Error: No se puede dividir entre cero."
    fi ;;
  5)
    if [ "$num2" -ne 0 ]; then
      resultado=$((num1 % num2))
      echo "El resto es $resultado"
    else
      echo "Error: No se puede calcular el resto con divisor 0."
    fi ;;
  6) echo "Saliendo del programa..."; exit 0 ;;
  *) echo "Opción no válida." ;;
esac

Menú de Usuario

Ofrece opciones para interactuar con el directorio personal de un usuario.

read -p "Introduce el nombre de un usuario: " usuario

# Mostrar menú de opciones
echo ""
echo "¿Qué quieres hacer?"
echo "======================="
echo "1. Ver el contenido del directorio personal del usuario"
echo "2. Cambiar al directorio de trabajo personal del usuario"
echo "3. Saber a qué grupos pertenece el usuario"
echo "4. Salir"
echo ""

# Leer la opción del usuario
read -p "Elige una opción (1/2/3/4): " opcion

case $opcion in
  1) ls /home/$usuario ;;
  2) cd /home/$usuario && pwd ;;
  3) groups $usuario ;;
  4) echo "Saliendo...";;
  *) echo "Opción no válida.";;
esac

Comprobación de Número (Añadido a Operación Aritmética)

Valida que la entrada del usuario sea un número antes de realizar operaciones aritméticas.

es_numero() {
  [[ $1 =~ ^-?[0-9]+(\.[0-9]+)?$ ]]
}

# Pedir los dos números
read -p "Introduce el primer número: " num1
read -p "Introduce el segundo número: " num2

# Validar que sean números
if ! es_numero "$num1" || ! es_numero "$num2"; then
  echo "Error: Debes introducir solo números."
  exit 1
fi

Comprobación de Usuario (Añadido a Usuario)

Verifica si el usuario existe antes de mostrar el menú de opciones.

if id "$usuario" &>/dev/null; then
  echo "El usuario '$usuario' es un usuario del sistema."

else
  echo "Error: El usuario '$usuario' no existe en el sistema."
  exit 1
fi

Suma de Números

Suma dos números introducidos por el usuario, validando que sean números.

read -p "Introduce el primer número: " num1
while ! [[ "$num1" =~ ^[0-9]+$ ]]; do
  echo "Error: Debes introducir un número."
  read -p "Introduce el primer número: " num1
done

read -p "Introduce el segundo número: " num2
while ! [[ "$num2" =~ ^[0-9]+$ ]]; do
  echo "Error: Debes introducir un número."
  read -p "Introduce el segundo número: " num2
done

echo "La suma es: $((num1 + num2))"

Positivo/Negativo, Par/Impar + Menú

Determina si un número es positivo o negativo, par o impar, y ofrece un menú de opciones.

read -p "Introduce un número: " num
while ! [[ "$num" =~ ^-?[0-9]+$ ]]; do
  echo "Error: Ingresa un número válido."
  read -p "Introduce un número: " num
done

# Menú de opciones
while true; do
  echo -e "\n¿Qué quieres saber?"
  echo "====================="
  echo "1. ¿El número $num es POSITIVO o NEGATIVO?"
  echo "2. ¿El número $num es PAR o IMPAR?"
  echo "3. Realizar un descuento"
  echo "4. Salir"
  read -p "Elige una opción (1/2/3/4): " opcion

  case $opcion in
    1)
      if (( num > 0 )); then
        echo "El número $num es POSITIVO"
      else
        echo "El número $num es NEGATIVO"
      fi ;;
    2)
      if (( num % 2 == 0 )); then
        echo "El número $num es PAR"
      else
        echo "El número $num es IMPAR"
      fi ;;
    3)
      read -p "¿Qué descuento quieres hacer? (10/20/50): " descuento
      if [[ "$descuento" =~ ^(10|20|50)$ ]]; then
        nuevo_precio=$(( num - (num * descuento / 100) ))
        echo "Antes del descuento: $num"
        echo "Después del descuento: $nuevo_precio"
      else
        echo "Error: Descuento no válido."
      fi ;;
    4)
      exit 0 ;;
    *)
      echo "Opción no válida." ;;
  esac
done

Par o Impar

Determina si un número es par o impar.

# Pedir un número y validar que sea un número válido
read -p "Introduce un número: " num
while ! [[ "$num" =~ ^-?[0-9]+$ ]]; do
  echo "Error: Ingresa un número válido."
  read -p "Introduce un número: " num
done

# Verificar si es par o impar
if (( num % 2 == 0 )); then
  echo "El número $num es PAR."
else
  echo "El número $num es IMPAR."
fi

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.