Fibonacci, Factorial, Tablas de Multiplicar y Listas en shell linux

Hola a todos tiempo sin escribir. Siempre con ganas de compartir una que otra cosita pero entre las ocupaciones me quedo sin hacerlo. esta vez les voy a compartir un programa en shell linux que lo hice para estudiar para un parcial y contiene lo siguiente:

  1. Un menu en shell linux (EN si contiene varios)
  2. Operaciones matematicas en shell linux
  3. Generación de tablas de multiplicar en shell linux
  4. Fibonacci en shell linux
  5. Factorial en shell linux
  6. Listas (escritura y busqueda dentro de un archivo) en shell linux
bueno la aplicación dispone de varios menú y hace control de flujo sobre ellos por si quieres volver a ejecutar una operación o ir saliendo.

Y no lo van a creer pero despues de pasar casi toda la noche estudiando y haciendo esto el profesor coloco en el parcial determinar si un numero era primo o no jajaja. bueno ese codigo se quedo en la U si que me quedo sin compartirlo :D

Ahora, el código de la aplicación:


#!/bin/sh

#Programita para estudiar para el parcial de Sistemas Operativos 2

opPPal=0 #esta variable controla que se vuelva al menu ppal

while (test $opPPal -lt 1) || (test $opPPal -gt 1)
do 

op=0 # esta es la variable que me va a controlar el  flujo del while

while (test $op -lt 1) || (test $op -gt 6)
 do
clear
echo " Universidad Popular del Cesar"
echo " "
echo " "
echo "Seleccion una opcion: "
echo " "
echo "1. Operaciones matematicas "
echo "2. Tablas de Multiplicar"
echo "3. Fibonacci"
echo "4. Factorial"
echo "5. Listas"
echo "6. Salir "
echo " "
echo "Operacion a ejecutar: \c "
read op
done #hasta aqui el wuile del menu

case  $op
in

 1) #Opcion de operaciones matematicas
    clear
    echo Operaciones basicas
    echo " "
    echo "Num 1:  "
    read num1
    echo " "
    echo "Num 2: "
    read num2
    #pimero mostramos la suma
    resultado=`expr $num1 '+' $num2`
    echo "El resutldo de la suma es: $resultado"
    #segundo la resta
    resultado=`expr $num1 '-' $num2`
    echo "El resutldo de la resta es: $resultado"
    #tercero la multiplicacion
    resultado=`expr $num1 '*' $num2`
    echo "El resutldo de la mult es: $resultado"
    #cuarto divicion
     resultado=`expr $num1 '/' $num2`
    echo "El resutldo de la div es: $resultado"
 
    ;; #fin case 1
 2) 
     # Genera la tabal de multiplicar de un numero
     clear
     echo "Tabla de Multiplicar"
     echo " "
     echo "Numero:  \c"
     read nMult
     echo " "
     echo "Los resultados son: "
     echo " "  
     ii=1
     while (test $ii -le 10) 
     do
 mult=`expr $nMult '*' $ii` 
      echo  "$nMult * $ii = $mult"
     
        ii=`expr $ii '+' 1`     
     done #fin while contador multiplicacion

   ;; #fin case 2


3)
  # Genera el fibonacci de un numero

  clear
  echo "Fibonacci de un numero"
  echo " "
  echo "Digite un numero: \c "
  read nFib

  echo "El fibonacci es: "

  nActual=1
  nAnte=-1
  z=1
 
  while (test $z -le $nFib)
  do
    c=`expr $nAnte '+' $nActual` 
    nAnte=$nActual
    nActual=$c
    
    echo "$c" 
    
    z=`expr $nAnte '+' 1`
  done #fin while fibonacci   


  ;;
4)
  #Genera el factorial
  clear
  echo "Factoria de un numero"
  echo " "
  echo "Digite un numero: \c "
  read nFact
  numero=1
  i=1
  while (test $i -le $nFact)
  do     
     bbb=0
     aa=1 
     
     while  (test $aa -le $i)
     do
       bbb=`expr $bbb '+' $numero`
       aa=`expr $aa '+' 1`   
       # echo "vale -- $aa"
     done #fin while 2
     
    numero=$bbb

    i=`expr $i '+' 1`     
    
  done #fin while 1 factorial 


   echo "El factorial es: $numero"
 ;;


  5)
    ##porgrama de listas

   
   opLD=0 # esta variable me va a controlar si se mantiene en el menu de la lista o sale del aplicativo
 
   while (test $opLD -lt 1) || (test $opLD -gt 1)
   do 
        clear
 opl=0 # esta es la variable que me va a controlar el  flujo del while para la lectura de la opcion del menu

  while (test $opl -lt 1) || (test $opl -gt 3)
    do
         clear
           echo " Universidad Popular del Cesar"
           echo " "
           echo " "
           echo "Seleccione una opcion: "
    echo " "
         echo "1. Crear - Agregar" #Se necesita crear un archivo que se llame listaMenu en el directorio donde este este script
    echo "2. Consultar"
    echo "3. Salir"
    echo " "
    echo "Operacion a ejecutar: \c "
    read opl
        done #hasta aqui el wuile del menu  de listas

 case $opl
        in
          1) 
            clear
            echo "Digite su nombre: \c"   
            read nombre
            echo $nombre >>  listaMenu
            echo " "
            echo "Almacenado correctamente."
            ;;
          2)
            clear
            echo "Digite el nombre a buscar: \c"   
            read nombre
            grep $nombre listaMenu
            ;;
          3)
            ;;
             
 esac
    

   echo " "
   echo " "
   echo "Desea seguir ejecutando la opcion de listas? 0 (Si) 1 (No) \c"
   read opLD 

  done #hasta aqui el while para mantenerse dentro del menu de listas

  ;;
 6) 
   clear
   echo " "
   echo " "
   echo "Gracias por utilizar el aplicativo y no olvides Cristo te ama y quiere salvarte."
   echo " "
   echo " "
   opPPal=1  #esto es para mandar al aplicativo a salir y omitir el if que esta unas lineas abajo
   ;;
 *)
   # aqui entra cuando no encuenta ninguna de las opciones
 ;;

esac #fin case

if (test $opPPal -ne 1) #si es diferente de 1 salgo de la aplicacion ()
then

echo " "
echo " "
echo "Desea seguir en la aplicacion? 0 (Si) 1 (No) \c"
read opPPal 

fi

done #fin while ppal que permite que se repita el menu

Nota: No soy un experto en shell ni mucho menos en linux esto solo es el fruto de una noche de estudio.

PD:  Cristo te Ama y quiere salvarte.