
Menu con pregunta de confirmacion
Publicado por Fer (21 intervenciones) el 13/11/2013 19:52:45
Hola, buenas.
Intentando mejorar un poco el script con el que trabajo me gustaria que despues de elegir una opcion me pidiera confirmacion de que es correcta y si no lo es me preguntara de nuevo recargando el menu. Para ello y sin saber si es el modo correcto (yo solo se algo de vba) he visto que se pueden hacer funciones, asi que he metido el bucle while en una funcion:
Al pulsar "n" regresa al menu, pero despues de seleccionar una nueva opcion (de pais) salta directamente despues del ultimo esac he imprime "Nunca deberia llegar aqui".
Ademas si CONFIRMA es diferente de s o n tambien sale al pulsa una tecla en lugar de regresar a esperar la s o n.
En fin que no me entero de como funciona esto por mucho que repase tema.
Gracias por adelantado a cualquier ayuda.
Intentando mejorar un poco el script con el que trabajo me gustaria que despues de elegir una opcion me pidiera confirmacion de que es correcta y si no lo es me preguntara de nuevo recargando el menu. Para ello y sin saber si es el modo correcto (yo solo se algo de vba) he visto que se pueden hacer funciones, asi que he metido el bucle while en una funcion:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash
PAIS=""
# Declaramos el procedimiento del menu como funcion
menu ()
{
clear
while :
do
echo " Escoja el pais al que pertenece la lista de emails a tratar "
echo "1. Afghanistán(AF) "
echo "2. Albania(AL) "
echo "3. Alemania(DE) "
Etc, etc.....
echo "245. Zaire (Congo)(ZR) "
echo "246. Zambia(ZM) "
echo "247. Zimbabwe(ZW) "
echo "248. SALIR "
echo -n "Seleccione una opcion [1 - 247] o 248 para salir: "
read opcion
case $opcion in
# Sustituimos la linea correspondiente en "ClasificaEmails.sh" y despues llamamos al script
1) sed -i '/# Linea de sustitucion/ cs/\\.af$/T/I # Linea de sustitucion' ClasificaEmails.sh;break;;
2) sed -i '/# Linea de sustitucion/ cs/\\.al$/T/I # Linea de sustitucion' ClasificaEmails.sh;break;;
3) sed -i '/# Linea de sustitucion/ cs/\\.de$/T/I # Linea de sustitucion' ClasificaEmails.sh;break;;
Etc, etc....
245) sed -i '/# Linea de sustitucion/ cs/\\.zr$/T/I # Linea de sustitucion' ClasificaEmails.sh;break;;
246) sed -i '/# Linea de sustitucion/ cs/\\.zm$/T/I # Linea de sustitucion' ClasificaEmails.sh;break;;
247) sed -i '/# Linea de sustitucion/ cs/\\.zw$/T/I # Linea de sustitucion' ClasificaEmails.sh;break;;
248) exit;;
*) echo "$opcion es una opcion invalida.";
echo "Presione enter para continuar";
read foo;;
esac
done
}
# Llamamos al menu
menu
# Mostramos la opcion elegida para pedir confirmacion de la misma
PAIS=$(grep -h -m1 "$opcion" Menu.sh | sed -e 's/echo \"//;s/ \"//')
echo -n "Confirme que $PAIS es el pais correcto [ s / n ]"
read CONFIRMA
case "$CONFIRMA" in
s) echo "Escribiste -si- y nos vamos a procesar" ;exit;;
n) echo "Escribiste -no- regresamos al menu para elegir pais de nuevo"
menu ;;
*) echo "Debe presionar s o n para continuar." ;;
esac
echo "Nunca deberia llegar aqui"
exit
clear
./ClasificaEmails.sh
Al pulsar "n" regresa al menu, pero despues de seleccionar una nueva opcion (de pais) salta directamente despues del ultimo esac he imprime "Nunca deberia llegar aqui".
Ademas si CONFIRMA es diferente de s o n tambien sale al pulsa una tecla en lugar de regresar a esperar la s o n.
En fin que no me entero de como funciona esto por mucho que repase tema.
Gracias por adelantado a cualquier ayuda.
Valora esta pregunta


0