Case Instruction

Hi,
this is my script to make a choice between 4 :

clear
echo " choose a profile and enter a number"
echo
echo " 1- oraSTT "
echo
echo " 2- appSTT "
echo
echo " 3- oraPDD "
echo
echo " 4- appPDD "
read Keypress
case "$Keypress" in
[1] )
echo "oraSTT"
PATH=/Data/oracle/d03/STTdb/9.2.0/bin:$PATH
export PATH
. /Data/oracle/d03/STTdb/9.2.0/STT_os03erd.env
;;
[2] ) echo "appSTT";;
[3] ) echo "oraPDD";;
[4] ) echo "appPDD";;

After choosing first one (1) only
echo "oraSTT"
is executed. The others :

PATH=/Data/oracle/d03/STTdb/9.2.0/bin:$PATH
export PATH
. /Data/oracle/d03/STTdb/9.2.0/STT_os03erd.env
;;

are not. What is wrong in my script ?
Many thanks.

if you're scripting in ksh, look into 'select' in 'man ksh'

Thank you , do you mean that we can not use "case" ?
Here is a part of man ksh :
case word in [ [(] pattern [| pattern] ... ) list ;; ] ... esac
The case statement attempts to match word against the specified patterns; the list associated with the first successfully matched pattern is executed. Pat-
terns used in case statements are the same as those used for file name patterns except that the restrictions regarding . and / are dropped. Note that any
unquoted space before and after a pattern is stripped; any space with a pattern must be quoted. Both the word and the patterns are subject to parameter,
command, and arithmetic substitution as well as tilde substitution. For historical reasons, open and close braces may be used instead of in and esac (e.g.,
case $foo { *) echo bar; }). The exit status of a case statement is that of the executed list; if no list is executed, the exit status is zero.

select name [ in word ... term ] do list done
where term is either a newline or a ;. The select statement provides an automatic method of presenting the user with a menu and selecting from it. An enu-
merated list of the specified words is printed on standard error, followed by a prompt (PS3, normally �#? �). A number corresponding to one of the enumer-
ated words is then read from standard input, name is set to the selected word (or is unset if the selection is not valid), REPLY is set to what was read
(leading/trailing space is stripped), and list is executed. If a blank line (i.e., zero or more IFS characters) is entered, the menu is re-printed without
executing list. When list completes, the enumerated list is printed if REPLY is null, the prompt is printed and so on. This process is continues until an
end-of-file is read, an interrupt is received or a break statement is executed inside the loop. If in word ... is omitted, the positional parameters are
used (i.e., "$1", "$2", etc.). For historical reasons, open and close braces may be used instead of do and done (e.g., select i; { echo $i; }). The exit
status of a select statement is zero if a break statement is used to exit the loop, non-zero otherwise.

As you can see in both it is possible to have a list of instructions.
Regards.

Have you tried putting ';' (semicolon) after your statement
echo "oraSTT"

I guess, you would need 1 semicolon after each statement except the last one.
See if this works:

Note there are 2 semicolons after your last statement
. /Data/oracle/d03/STTdb/9.2.0/STT_os03erd.env