Ejercicios básicos en bash

Ejercicios básicos en bash

·

3 min read

https://youtu.be/2DHWCQPevPo?si=iYWMHhd7ilXXRTGM

utilizando bash como programa para realizar ejercicios básico que mezclan la lógica y matemáticas fundamentales, voy a poner las soluciones a las que he llegado. Hay muchas maneras de resolver el mismo ejercicio con sintaxis diferentes, esta es la manera que me parece más simple para conseguir comenzar a entender la programación.

El siguiente ejercicio calcula el valor absoluto de un número entero introducido por teclado.

#!/bin/bash
echo "Introduce un número entero: "
read num
if [ $num>=0 ]; then
    absoluto=$((num < 0 ? -num : num))
fi
echo "el valor absoluto de $num es $absoluto."

al valor absoluto le asigno la función que hará lo que le indico entre parentesis, cuando el valor "$num" sea mayor que cero (esto es un número entero) la interrogación indica que no se usarán decimales.

literalmente le dice desde el valor introducido "$num" en negativo hasta 0 y de 0 al valor de num asignaselo a "absoluto".

Estamos creando una función que en principio no existe en bash. la estamos creando dentro del programa para poder usarla.

De esta forma nos calcula el valor absoluto de un número sea negativo o positivo, eso si, debe de ser entero.

asi se veria el output si se ejecutara desde una terminal.

./absoluto.sh
Intriduzca un número: 
9
El valor absoluto de 9 es 9.
./absoluto.sh 
Intriduzca un número: 
-5
El valor absoluto de -5 es 5.

Ejercicio de ordenar con bash, en el que se nos pide ordenar tres números introducidos por teclado por el usuario.

Primero deberíamos de definir los valores que el usuario introducirá, los llamaremos numero1, numero2 y numero3. pero en nombre es irrelevante en este paso los podríamos llamar a,b y c

#!/bin/bash
echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3

después, seguimos con el una condición if.

Si el $numero1 es mayor que el $numero2 y $numero1 es mayor que $numero 3 entonces el mayor será el valor que el usuario haya introducido como valor en $numero1.

if [ $numero1 -ge $numero2 ] && [ $numero1 -ge $numero3 ]; then
    mayor=$numero1

nos quedaría que el $numero2 sería el medio y $numero3 el menor o al revés podría ser el $numero3 el medio el $numero2 el menor.

if [ $numero2 -ge $numero3 ]; then
      medio=$numero2
      menor=$numero3
    else
      medio=$numero3
      menor=$numero2
    fi

Abririmos una segunda condicion con elif, si el $numero2 es mayor que $numero 1 y mayor que $numero 3, entonces $numero2 es el mayor.

elif [ $numero2 -ge $numero1 ] && [ $numero2 -ge $numero3 ]; then
    mayor=$numero2

Quedando la posibilidad de que $numero1 sea el medio y $numero3 el menor o que $numero3 sea el medio y que $numero1 sea el menor.

if [ $numero1 -ge $numero3]; then
      medio=$numero1
      menor=$numero3
    else
      medio=$numero3
      menor=$numero1
    fi

Pasariamos a la última condición con un else, si no se han cumplido las dos condiciones anteriores, significa que $numero3 es el mayor.

 else
    mayor=$numero3

entonces $numero 2 podría ser el medio y $numero1 el menor o $numero 1 el medio y $numero2 el menor.

if [ $numero1 -ge $numero2 ]; then
      medio=$numero1
      menor=$numero2
    else
      medio=$numero2
      menor=$numero1
    fi
fi

Fin del programa y le decimos que nos imprima por pantalla $mayor, $medio y $menor

echo "Los numero ordenados de mayor  menor son: $mayor, $medio, $menor."
#!/bin/bash

echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3

if [ $numero1 -ge $numero2 ] && [ $numero1 -ge $numero3 ]; then
    mayor=$numero1
    if [ $numero2 -ge $numero3 ]; then
      medio=$numero2
      menor=$numero3
    else
      medio=$numero3
      menor=$numero2
    fi
  elif [ $numero2 -ge $numero1 ] && [ $numero2 -ge $numero3 ]; then
    mayor=$numero2
    if [ $numero1 -ge $numero3]; then
      medio=$numero1
      menor=$numero3
    else
      medio=$numero3
      menor=$numero1
    fi
  else
    mayor=$numero3
    if [ $numero1 -ge $numero2 ]; then
      medio=$numero1
      menor=$numero2
    else
      medio=$numero2
      menor=$numero1
    fi
fi
echo "Los numero ordenados de mayor  menor son: $mayor, $medio, $menor."