Вы не можете использовать код возврата read
(он равен нулю, если он становится действительным, непустой ввод), и вы можете ' t использовать его вывод ( чтение
ничего не выводит). Но вы можете поместить несколько команд в условную часть цикла while. Условие цикла while может быть любой сложной командой.
while read -n1 -r -p "choose [y]es|[n]o" && [[ $REPLY != q ]]; do
case $REPLY in
y) echo "Yes";;
n) echo "No";;
*) echo "What?";;
esac
done
(Выход из цикла, если введено q
или если обнаружено условие конца файла.)