Seu menu exibido por seleção será parecido com:
1) apache
2) named
3) sendmail
Select an option and press Enter:
Neste momento, você digita "1" ou "2" ou "3": você não digita a palavra.
Além disso, select
fará um loop até ver um comando break
, então você quer isso:
case $opt in
"apache")
date
break
;;
"named")
echo "test"
break
;;
"sendmail")
echo "test 2"
break
;;
*) echo "invalid option";;
esac
Se você quiser permitir que o usuário insira o número ou a palavra, escreva:
select opt in "${options[@]}"; do
case "$opt,$REPLY" in
apache,*|*,apache) do_something; break ;;
named,*|*,named) do_something; break ;;
sendmail,*|*,sendmail) do_something; break ;;
esac
done
A vírgula não tem significado sintático, ela está lá para ser capaz de combinar padrões na variável $ REPLY (que é o que o usuário realmente digitou) ou na variável $ opt