79 lines
2.2 KiB
Bash
Executable File
79 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# -------------------------------------------------------------
|
|
# Autor: Juan Pablo Parra
|
|
# Descripción: Calculadora básica en Bash que soporta suma,
|
|
# multiplicación y potencia. Solo opera con
|
|
# números naturales (enteros positivos).
|
|
# Incluye mensajes de error y ayuda (--h, --help).
|
|
# -------------------------------------------------------------
|
|
|
|
# --- Función de ayuda ---
|
|
mostrar_ayuda() {
|
|
echo "---------------------------------------------"
|
|
echo " Calculadora en Bash - Ayuda"
|
|
echo "---------------------------------------------"
|
|
echo "Uso:"
|
|
echo " ./calculadora.sh <num1> <operador> <num2>"
|
|
echo ""
|
|
echo "Operaciones disponibles:"
|
|
echo " + Suma de dos números"
|
|
echo " * Multiplicación de dos números"
|
|
echo " ** Potencia (num1 elevado a num2)"
|
|
echo ""
|
|
echo "Ejemplos:"
|
|
echo " ./calculadora.sh 2 + 2 → 4"
|
|
echo " ./calculadora.sh 3 '*' 3 → 9"
|
|
echo " ./calculadora.sh 2 '**' 3 → 8"
|
|
echo ""
|
|
echo "Notas:"
|
|
echo " - Usa comillas para los operadores * y ** para"
|
|
echo " evitar que el shell los expanda."
|
|
echo " - Solo se aceptan números naturales (enteros positivos)."
|
|
echo " - Si ocurre un error, el script retorna código 1."
|
|
echo "---------------------------------------------"
|
|
exit 0
|
|
}
|
|
|
|
# --- Verificar si se pidió ayuda antes de validar nada ---
|
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
|
mostrar_ayuda
|
|
fi
|
|
|
|
# --- Validación de argumentos ---
|
|
if [ $# -lt 3 ]; then
|
|
echo "Error: uso incorrecto. Use -h o --help para ver ayuda."
|
|
exit 1
|
|
fi
|
|
|
|
# --- Extracción de argumentos ---
|
|
num1=$1
|
|
op=$2
|
|
num2=$3
|
|
|
|
# --- Validar que los operandos sean números naturales ---
|
|
if ! [[ "$num1" =~ ^[0-9]+$ ]] || ! [[ "$num2" =~ ^[0-9]+$ ]]; then
|
|
echo "Error: los operandos deben ser números naturales (enteros positivos)."
|
|
exit 1
|
|
fi
|
|
|
|
# --- Selección de operación ---
|
|
case "$op" in
|
|
"+")
|
|
result=$((num1 + num2))
|
|
;;
|
|
"*")
|
|
result=$((num1 * num2))
|
|
;;
|
|
"**"|"^")
|
|
result=$((num1 ** num2))
|
|
;;
|
|
*)
|
|
echo "Error: operación no reconocida. Use +, * o **"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# --- Mostrar resultado ---
|
|
echo "$result"
|
|
exit 0
|