select
espera que você insira o número correspondente; 1 para Sim ou 2 para Não neste caso.
Ainda assim, a string real que o usuário digitou fica armazenada na variável chamada REPLY
, assim você pode analisar isso além dos números.
Eu acabei de escrever uma função para perguntas sim / não; uma consulta sim / não não é para o que select
foi projetado. Algo como
confirm() {
local answer
read -p "$1" -n1 answer
while [[ $answer && $answer != [YyNn] ]]; do
printf '\nPlease answer y or n\n' >&2
read -p "$1" -n1 answer
done
printf '\n'
[[ -z $answer || $answer = [Yy] ]]
}
#...
if confirm "Are you sure? [Y/n] "; then
printf 'Ok\n'
else
printf 'Fine, I will find something else to do\n'
fi
Y, y ou ENTER farão a função retornar true, N ou n farão a função retornar false. Você pode estendê-lo para obter o valor padrão como segundo argumento.