Primeiro, você está perdendo um caso "Option 1")
antes de seu if
. E "Option3"
na sua lista de opções não possui um espaço: deve ser "Option 3"
.
Além disso, não consigo entender sua pergunta. Qual é o problema? Uma vez que estes são corrigidos, parece funcionar para mim. Abaixo está um teste. Para esclarecer, exit
sai do script e retorna o usuário ao prompt do shell. Se você quiser ficar no script, não use exit
.
ace@ace2:~$ ./test.sh
1) Option 1
2) Option 2
3) Option 3
4) Quit
Please enter your choice: 1
Thank you.
ace@ace2:~$ RESP="y" ./test.sh
1) Option 1
2) Option 2
3) Option3
4) Quit
Please enter your choice: 1
you chose choice 1
Please enter your choice: 2
you chose choice 2
Please enter your choice: 3
you chose choice 3
Please enter your choice: 4
ace@ace2:~$
Aqui está o código:
#!/bin/bash
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
if [ "$RESP" = "y" ]; then
echo "you chose choice 1"
else
echo "Thank you."
sleep 2
exit
fi
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice 3"
;;
"Quit")
break
;;
*)
echo invalid option
;;
esac
done