Av de la Arboleda, s/n, Av.
Arboleda, 21440 Lepe, Huelva
Ciclo Formativo de Grado Superior de Desarrollo de Aplicaciones Web (DAW)
Módulo Profesional de SISTEMAS INFORMÁTICOS
Unidad Didáctica 8 – Shell Script - Linux
Realiza los siguientes scripts:
Instrucciones generales:
- Deberán funcionar correctamente conforme a lo que pide cada enunciado.
- Incluye mensajes adecuados, bien estructurados, con amplitud de líneas en blanco para una mejor
visualización. Incluye también nombres de ficheros, directorios, etc., dentro de los mensajes para
que queden mejor visualmente.
- Comenta el código para que se pueda seguir claramente.
Resolver con la estructura de control “if”:
1. Escribe un script que solicite al usuario dos números y los compare. Si son iguales, que
muestre "Los números son iguales". Si el primero es mayor, que indique "El primer número
es mayor". Si el segundo es mayor, que indique "El segundo número es mayor".
#!/bin/bash
# Solicitar dos números
read -p "Introduce el primer número: " num1
read -p "Introduce el segundo número: " num2
# Comparar los números
if [ $num1 -eq $num2 ]; then
echo "Los números son iguales"
elif [ $num1 -gt $num2 ]; then
echo "El primer número es mayor"
else
echo "El segundo número es mayor"
fi
2. Diseña un script que pida al usuario que introduzca el nombre de un archivo y luego
verifique si el archivo existe. Si existe, que indique si el usuario tiene permisos de lectura,
escritura y ejecución sobre él.
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
#!/bin/bash
# Solicitar el nombre del archivo
read -p "Introduce el nombre del archivo: " archivo
# Verificar si el archivo existe
if [ -e "$archivo" ]; then
echo "El archivo existe."
# Comprobar permisos
[ -r "$archivo" ] && echo "Tienes permisos de lectura."
[ -w "$archivo" ] && echo "Tienes permisos de escritura."
[ -x "$archivo" ] && echo "Tienes permisos de ejecución."
else
echo "El archivo no existe."
fi
Resolver con la estructura de control “case” (y utilizando “if” también en la que sea
necesario):
3. Crea un script que muestre un menú con las siguientes opciones y muestre un mensaje de
saludo según la que se seleccione:
1. Mañana
2. Tarde
3. Noche
#!/bin/bash
echo "Selecciona una opción:"
echo "1. Mañana"
echo "2. Tarde"
echo "3. Noche"
read -p "Opción: " opcion
case $opcion in
1) echo "¡Buenos días!";;
2) echo "¡Buenas tardes!";;
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
3) echo "¡Buenas noches!";;
*) echo "Opción no válida";;
esac
4. Crea un script que muestre un menú con las siguientes opciones y muestre un mensaje
alusivo al color seleccionado:
1. Rojo
2. Azul
3. Verde
#!/bin/bash
echo "Selecciona un color:"
echo "1. Rojo"
echo "2. Azul"
echo "3. Verde"
read -p "Opción: " opcion
case $opcion in
1) echo "Has seleccionado el color Rojo";;
2) echo "Has seleccionado el color Azul";;
3) echo "Has seleccionado el color Verde";;
*) echo "Opción no válida";;
esac
5. Crea un script que muestre un menú con las siguientes opciones y muestre un mensaje
alusivo a la comida seleccionada:
1. Pizza
2. Hamburguesa
3. Ensalada
#!/bin/bash
echo "Selecciona una comida:"
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
echo "1. Pizza"
echo "2. Hamburguesa"
echo "3. Ensalada"
read -p "Opción: " opcion
case $opcion in
1) echo "Has seleccionado Pizza";;
2) echo "Has seleccionado Hamburguesa";;
3) echo "Has seleccionado Ensalada";;
*) echo "Opción no válida";;
esac
6. Diseña un script que pida al usuario el nombre de un animal entre perro, gato y pájaro y, en
función del que se indique, muestre un mensaje con alguna característica básica del animal.
#!/bin/bash
read -p "Introduce un animal (perro, gato, pájaro): " animal
case $animal in
perro) echo "El perro es un excelente animal de compañía.";;
gato) echo "El gato es un animal independiente y ágil.";;
pájaro) echo "El pájaro es conocido por su capacidad de volar.";;
*) echo "Animal no reconocido";;
esac
7. Escribe un script que pida al usuario un número del 1 al 7 y devuelva el nombre del día de la
semana correspondiente (1 = Lunes, 2 = Martes, etc.).
Si el número no está entre 1 y 7, que muestre un mensaje de error.
#!/bin/bash
read -p "Introduce un número del 1 al 7: " num
case $num in
1) echo "Lunes";;
2) echo "Martes";;
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
3) echo "Miércoles";;
4) echo "Jueves";;
5) echo "Viernes";;
6) echo "Sábado";;
7) echo "Domingo";;
*) echo "Número no válido";;
esac
8. Crea un script que muestre un menú con las siguientes opciones y las realice según la
selección:
1. Mostrar la fecha actual
2. Mostrar el nombre del usuario
3. Mostrar el directorio actual
4. Salir
#!/bin/bash
echo "Selecciona una opción:"
echo "1. Mostrar la fecha actual"
echo "2. Mostrar el nombre del usuario"
echo "3. Mostrar el directorio actual"
echo "4. Salir"
read -p "Opción: " opcion
case $opcion in
1) date;;
2) whoami;;
3) pwd;;
4) echo "Saliendo..."; exit;;
*) echo "Opción no válida";;
esac
9. Crea un script que solicite un solo carácter al usuario y, si es una vocal, mostrar "Has
introducido una vocal". Si es un número, mostrar "Has introducido un número". En
cualquier otro caso, mostrar "Has introducido otro tipo de carácter".
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
#!/bin/bash
read -p "Introduce un carácter: " caracter
if [[ "$caracter" =~ [aeiouAEIOU] ]]; then
echo "Has introducido una vocal."
elif [[ "$caracter" =~ [0-9] ]]; then
echo "Has introducido un número."
else
echo "Has introducido otro tipo de carácter."
fi
10. Diseña un script que solicite dos números y realice la suma de ambos.
#!/bin/bash
read -p "Introduce el primer número: " num1
read -p "Introduce el segundo número: " num2
suma=$((num1 + num2))
echo "La suma de los números es: $suma"
11. Crea un script que pida dos números y una operación (+, -, *, /). Luego,
dependiendo de la operación indicada, deberá realizar la operación correspondiente y
mostrar el resultado.
Si el usuario introduce una operación inválida, debe mostrar un mensaje de error.
#!/bin/bash
read -p "Introduce el primer número: " num1
read -p "Introduce el segundo número: " num2
read -p "Introduce la operación (+, -, *, /): " operacion
case $operacion in
+) resultado=$((num1 + num2));;
-) resultado=$((num1 - num2));;
\*) resultado=$((num1 * num2));;
/) if [ $num2 -ne 0 ]; then
resultado=$((num1 / num2))
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
else
echo "No se puede dividir por cero."
exit
fi
;;
*) echo "Operación no válida"; exit;;
esac
echo "El resultado es: $resultado"
12. Escribe un script que pida un número e indique si es par o impar.
#!/bin/bash
read -p "Introduce un número: " num
if [ $((num % 2)) -eq 0 ]; then
echo "El número es par"
else
echo "El número es impar"
fi
13. Diseña un script que pida un número y nos pregunte si queremos ver el doble o el
triple de dicho número y que realice las operaciones indicadas.
#!/bin/bash
read -p "Introduce un número: " num
read -p "¿Quieres ver el doble o el triple? (doble/triple): " eleccion
if [ "$eleccion" == "doble" ]; then
echo "El doble del número es: $((num * 2))"
elif [ "$eleccion" == "triple" ]; then
echo "El triple del número es: $((num * 3))"
else
echo "Opción no válida"
fi
14. Diseña un script que pida un número y nos pregunte si queremos calcular su
cuadrado o su cubo y que realice las operaciones indicadas.
#!/bin/bash
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
read -p "Introduce un número: " num
read -p "¿Quieres calcular el cuadrado o el cubo? (cuadrado/cubo): " eleccion
if [ "$eleccion" == "cuadrado" ]; then
echo "El cuadrado del número es: $((num * num))"
elif [ "$eleccion" == "cubo" ]; then
echo "El cubo del número es: $((num * num * num))"
else
echo "Opción no válida"
fi
15. Crea un script que pida un número y determine si es positivo, negativo o cero.
#!/bin/bash
read -p "Introduce un número: " num
if [ $num -gt 0 ]; then
echo "El número es positivo"
elif [ $num -lt 0 ]; then
echo "El número es negativo"
else
echo "El número es cero"
fi
16. Escribe un script que pida al usuario que introduzca un nombre se determine si es un
archivo, un directorio o si no existe.
#!/bin/bash
read -p "Introduce un nombre de archivo o directorio: " nombre
if [ -f "$nombre" ]; then
echo "Es un archivo regular"
elif [ -d "$nombre" ]; then
echo "Es un directorio"
else
echo "No existe o no es un archivo ni directorio"
Av de la Arboleda, s/n, Av. Arboleda, 21440 Lepe, Huelva
fi
17. Crea un script que calcule el área de algunas figuras geométricas. Deberá mostrar un
menú con las siguientes opciones y pedir, según la que se seleccione, los datos que sean
necesarios para los cálculos y realizarlos. Para trabajar con decimales, investiga sobre el
comando “bc” y el parámetro “scale”:
1. Círculo
2. Cuadrado
3. Triángulo
#!/bin/bash
echo "Selecciona una figura:"
echo "1. Círculo"
echo "2. Cuadrado"
echo "3. Triángulo"
read -p "Opción: " opcion
case $opcion in
1)
read -p "Introduce el radio del círculo: " radio
area=$(echo "scale=2; 3.1416 * $radio * $radio" | bc)
echo "El área del círculo es: $area"
;;
2)
read -p "Introduce el lado del cuadrado: " lado
area=$(echo "$lado * $lado" | bc)
echo "El área del cuadrado es: $area"
;;
3)
read -p "Introduce la base del triángulo: " base
read -p "Introduce