Duda sobre funciones

Hola buenos días,

He realizado el sguiente script , lo que quiero realizar es que si no se selecciona ninguna opción del sub-menu
regrese al menu general, os pongo el código

Citar

#!/bin/bash

clear
function menugeneral {

echo " 1.Menu 1 "
echo
echo
echo " 2.Menu 2 "
echo
echo
echo " 3.Salir "
echo
echo
echo " Seleccione una opcion: $opcion "

}

read opcion
case $opcion in

1)

echo -n " Menu 1 "

;;

2)

echo -n " Menu 2 "
;;

3)

break

;;

*)

echo -n " No se ha seleccionado ninguna opcion "

menugeneral

;;

esac

Un saludo y gracias.

Hola

Busca información subre bucles (do, while) ;)
Con ellos deberias de conseguir lo que quieres que es:

Ejemplo escribió:

mientras no se selecciona ninguna opción del sub-menu
regrese al menu general

Por poner un ejemplo.

Un Saludo

kamikaze escribió:

Busca información subre bucles (do, while) ;)
.....

¿Podría ser algo similar a esto?

Opciones="saludar salir"
select opt in $Opciones; do

if [ "$opt" = "saludar" ]; then
echo dome
echo Hola dijite su nombre
read nombre
echo hola $nombre

elif [ "$opt" = "salir" ]; then
echo done
exit

else
echo Seleccion incorrecta
fi
done

¿Piensas ponerle tiempo al menú? ¿O cómo vas a implementar el retorno al menú principal?

Yo usaría "4) Volver al menú principal" o algo así...

no me acaba de convencer la sintaxis... sobran muchos ecos por ahí. Seguro que puede reescribirse de forma más eficaz. De entrada deberías usar bucles como te indican

Los errores que yo veo.

-Función mal definida.
-Uso de "echo" para salto de línea, se usa "\n"
-No llamas a la función, por tanto no se ejecuta.
-Usa un blucle while o if, se puede hacer de las dos maneras.

y esto sobra: ;;

Realmente no tengo claro que es lo que estás intentando hacer... pero si fuera un menú emergente con varias opciones yo lo haría con perl, por ejemplo, no con bash

Hola buenas noches,

No va a ir con tiempo y justo lo que quiero implementar es eso "4) Volver al menú principal" pero estoy atascado la verdad, y tiene que ser con shell script.

Un saludo

PD.Cuando termine el script ya lo colgaré por aqui por si a alguien le interesa y seguro lo puede mejorar.

Te recomiendo que pienses, que programar (o hacer scripts en este caso) no va de aporrear teclas.
A menos que te lo hayan pedido así no tienes por qué hacer ninguna función:
Con algo así te debería valer.

#!/bin/bash

while [ -z $option ];do
echo "Menú 1"
echo -e "Opcion 1\n"
echo "Menú 2"
echo -e "Opcion 2\n"
echo "Menú 3"
echo -e "salir\n"
echo -n "Elección: "
read option
case $option in
1)echo "Menu 1.1"
;;
2)echo "Menu 2.1"
;;
3)exit
;;
esac
done

Si te obligan a hacerlo con función con esto ya podrás figurártelo.

Tusix escribió:
kamikaze escribió:

Busca información subre bucles (do, while) ;)
.....

¿Podría ser algo similar a esto?

Opciones="saludar salir"
select opt in $Opciones; do

if [ "$opt" = "saludar" ]; then
echo dome
echo Hola dijite su nombre
read nombre
echo hola $nombre

elif [ "$opt" = "salir" ]; then
echo done
exit

else
echo Seleccion incorrecta
fi
done

Que diferencia de codigo con el que te han puesto finalmente... De todas formas sigo pensando que deberias buscar informacion de bucles, y sin duda alguna de Shell Script.
Ya que los comienzos son duros, aunque hoy en dia con internet hubieras tenido miles de ejemplos de lo que quieres hacer, con una rapida busqueda o a la segunda o a la tercera. De cualquier forma aun parece que te queda camino para recorrer en tu script, ¡perfecto! mas retos ;) .

Ah!!! una nota:

mose escribió:

...que programar (o hacer scripts en este caso) no va de aporrear teclas.

Eso seria antes... vete aqui y nada mas ver la pantalla negra... aporrea... veras que sorpresa ;)

Un Saludo

Mose,

Asi lo tenia desde el principio, pero lo que pasaba, es que se salia del todo del script

Un saludo