Embora isso seja provavelmente possível, certamente não vale a pena o esforço. Em qualquer caso, pedir a um usuário que interaja com o script é (IMO) sempre uma má ideia. Isso significa que você nunca pode automatizar o uso do script e também cria problemas como o que você descreve. Geralmente, é melhor passar a escolha do usuário como argumento. Você também não quer ou precisa de break
dentro de uma instrução case
restore (){
echo "Restore"
}
deploy () {
echo "Deploy"
}
## read the 1st argument
case $1 in
restore)
restore;
;;
deploy)
deploy;
;;
esac
Em seguida, execute o script assim:
foo.sh restore
ou
foo.sh deploy