Permanecendo no bash (ou qualquer outro shell se você exibir o prompt independentemente):
case $answer in
[Yy]*) echo Ok;;
*) echo "Can't you read? I said to say yes.";;
esac
Isso aceita respostas como yn
como sim, y
(com um espaço inicial) como não e wlkjzuhfod
como não, o que pode não ser ideal, mas é consistente com prompts típicos do shell: é assim que rm -i
, find -ok
e outros fazem isso.
Isso evita toda a questão da internacionalização: em outros idiomas, você precisaria traduzir as respostas esperadas. Não há nenhum método de shell padrão; você pode usar o diálogo , mas o seu script exigirá que ele seja instalado (está disponível em muitas distribuições, mas nem sempre instalado pelo padrão).
if dialog --yesno "Choose yes" 0 0; then …