Als Antwort auf andere:
Sie müssen den Fall in BASH4 nicht angeben. Verwenden Sie einfach ',,' um eine Variable in Kleinbuchstaben umzuwandeln. Außerdem mag ich es nicht, Code innerhalb des read-Blocks zu platzieren, erhalten Sie das Ergebnis und gehen Sie meiner Meinung nach außerhalb des read-Blocks damit um. Fügen Sie auch ein 'q' zum Beenden hinzu meiner Meinung nach. Schließlich warum 'yes' eingeben, verwenden Sie einfach -n1 und lassen Sie den Benutzer y drücken.
Beispiel: Benutzer kann y/n drücken und auch q zum einfachen Beenden.
ans=''
while true; do
read -p "Ist MikeQ der Größte oder was (y/n/q)?" -n1 ans
case ${ans,,} in
y|n|q) break;;
*) echo "Antworten Sie mit y für ja / n für nein oder q zum Beenden.";;
esac
done
echo -e "\nAntwort = $ans"
if [[ "${ans,,}" == "q" ]]; then
echo "OK, Beenden, wir werden annehmen, dass er es ist"
exit 0
fi
if [[ "${ans,,}" == "y" ]]; then
echo "MikeQ ist der Größte!!"
else
echo "Nein? Ist MikeQ nicht der Größte?"
fi
40 Stimmen
Just als Hinweis: Die Konvention für Aufforderungen besagt, dass wenn Sie eine Option
[yn]
präsentieren, die Großschreibung die Standardeinstellung ist, d.h.[Yn]
wird standardmäßig auf "yes" und[yN]
auf "no" festgelegt. Siehe ux.stackexchange.com/a/40445/435324 Stimmen
Jeder, der von ZSH hierher kommt, siehe diese Antwort für die Verwendung des
read
Befehls zur Aufforderung2 Stimmen
Sie können auch meine zugehörige Frage/Antwort auf U&L.SE zur kanonischen Art, in
bash
zu pausieren, in Betracht ziehen. Die bereitgestellten Ergebnisse können einfach übertragen werden.