3- Creamos un Script para Automatizar Actualizaciones del Sistema
Análisis paso a paso en español
Primer Script
#!/bin/bash
read -p "Escribe actualizar para actualizar el sistema, y escribe salir para salir del script: " desicion
if [ "$desicion " -eq "actualizar " ]; then
apt update
apt upgrade -y
apt autoremove -y
apt autoclean -y
echo "El sistema entero ha sido actualizado"
elif [ "$desicion" -eq "salir" ]; then
exit
fi
Problemas:
- Comparación de cadenas con
-eq
: Este operador solo se utiliza para comparar números. Para cadenas, se debe usar=
o==
. - Espacios en variables:
$desicion
introduce un espacio adicional, lo que puede romper la condición. - Sin manejo de entradas no válidas: No informa si el usuario escribe algo incorrecto.
Resultado:
El script falla al intentar comparar cadenas.
Segundo Script
#!/bin/bash
read -p "Escribe actualizar para actualizar el sistema, y escribe salir para salir del script: " desicion
if [ "$desicion " = "actualizar " ]; then
apt update
apt upgrade -y
apt autoremove -y
apt autoclean -y
echo "El sistema entero ha sido actualizado"
elif [ "$desicion" = "salir" ]; then
exit
fi
Soluciones:
- Comparación de cadenas con
=
: Corrige el operador de comparación para cadenas. - Espacios adicionales:
$desicion
aún tiene un espacio que puede causar problemas.
Resultado:
Funciona parcialmente, pero puede fallar debido a entradas del usuario con espacios no deseados.
Tercer Script
#!/bin/bash
read -p "Escribe el nombre del programa que quieras instalar: " desicion
apt install $desicion
Características:
- Diseño simplificado: Instala el paquete indicado por el usuario.
- Sin manejo de errores: No valida si el paquete existe o no.
Resultado:
Funciona, pero puede fallar sin notificar al usuario si el paquete no está disponible.
Cuarto Fragmento
apt-cache show audacity
echo $?
-
Comando
apt-cache show audacity
:- Intenta mostrar información sobre el paquete
audacity
desde los repositorios configurados. - Si el paquete existe, se imprimen detalles como su descripción, versión, dependencias, etc.
- Si el paquete no está en los repositorios configurados, no devuelve nada y genera un código de salida diferente de
0
.
- Intenta mostrar información sobre el paquete
-
Comando
echo $?
:- Muestra el código de retorno del último comando ejecutado (
apt-cache show audacity
en este caso). - Códigos de retorno comunes:
0
: El comando fue exitoso (el paquete existe).- Diferente de
0
: Hubo un error (el paquete no está en los repositorios).
- Muestra el código de retorno del último comando ejecutado (
Quinto Script
#!/bin/bash
read -p "Escribe el nombre del programa que quieras instalar: " programa
apt-cache show $programa
posible_error=$(echo $?)
echo $posible_error
Características:
- Captura del código de retorno:
apt-cache show
verifica si el paquete existe y$?
guarda el código de retorno. - Sin lógica condicional: Solo muestra el código de retorno.
Resultado:
Funciona, pero no informa al usuario si el paquete es inválido.
Sexto Script
#!/bin/bash
read -p "Escribe el nombre del programa que quieras instalar: " programa
apt-cache show $programa >/dev/null
posible_error=$(echo $?)
echo $posible_error
Mejora:
- Redirección de salida: Suprime la salida de
apt-cache
con>/dev/null
. - Aún sin validación: Solo muestra el código de retorno.
Séptimo Script
#!/bin/bash
read -p "Escribe el nombre del programa que quieras instalar: " programa
apt-cache show $programa >/dev/null
posible_error=$(echo $?)
echo $posible_error
if [ "$posible_error" -eq "0" ]; then
apt install $programa
else
echo "No se encontró el paquete en los repositorios"
fi
Características:
- Validación añadida: Comprueba el código de retorno y notifica al usuario si el paquete no está disponible.
- Manejo de errores: Informa si el paquete no puede instalarse.
Resultado:
Funciona correctamente y es amigable para el usuario.
Último Script
#!/bin/bash
programa=$1
apt-cache show $programa >/dev/null
posible_error=$(echo $?)
echo $posible_error
if [ "$posible_error" -eq "0" ]; then
apt install $programa
else
echo "No se encontró el paquete en los repositorios"
fi
Características:
- Argumento desde la línea de comandos: Acepta la entrada directamente como parámetro del script.
- Misma validación: La lógica para verificar la disponibilidad del paquete permanece igual.
Resultado:
Ideal para automatización o integración en scripts.
Lecciones clave:
- Comparación de cadenas: Usa
=
o==
para cadenas y-eq
para números. - Validación de entrada: Siempre verifica y maneja errores para guiar al usuario.
- Listo para automatización: Los argumentos desde la línea de comandos mejoran la flexibilidad.