next up previous
Next: for ... do ... Up: Estructuras de control Previous: Estructuras de control

case ... in ... esac

Así el shell soporta el salto multicamino en función de una única comprobación de una cadena. Su sintaxis:
case expresión in
patrón {| patrón}*
lista
;;
esac

Veamos un ejemplo:



width 3pt
width .3pt415pt$ cat case.sh
#! /bin/sh
echo menu test program
echo
stop=0                                      # flag de salida del bucle
while test $stop -eq 0                      # el bucle
# cat coge como entrada estándar lo escrito entre las etiquetas
# END_OF_MENU, líneas que no pueden ir comentadas.
do
 cat << END_OF_MENU
 1:   print the date
 2,3: print the current working directory
 4;   exit
END_OF_MENU
 echo
 echo -n 'your choice ... '
 read reply                                # leemos la entrada estándar
 echo
 case $reply in
   "1")
     date
     ;;
   "2"|"3")
     pwd
     ;;
   "4")
     stop=1
     ;;
   *)
   echo illegal choice
   ;;
 esac
done
$ case.sh
menu test program

 1:   print the date
 2,3: print the current working directory
 4;   exit

your choice ... 1

Wed Jul 17 18:59:41 GMT+0100 1996
 1:   print the date
 2,3: print the current working directory
 4;   exit

your choice ... 5

illegal choice  1:   print the date
 2,3: print the current working directory
 4;   exit

your choice ... 4

$
width .3pt
depth .3pt width -3pt



Vicente González Ruiz
1998-07-13