Ich habe die case
Anweisung schon ein paar Mal in einem solchen Szenario verwendet, die Verwendung der case-Anweisung ist ein guter Weg, um damit umzugehen. Eine while
-Schleife, die den case
-Block umschließt und eine boolesche Bedingung verwendet, kann implementiert werden, um noch mehr Kontrolle über das Programm zu haben und viele andere Anforderungen zu erfüllen. Nachdem alle Bedingungen erfüllt sind, kann ein break
verwendet werden, um die Kontrolle wieder an den Hauptteil des Programms zu übergeben. Um auch andere Bedingungen zu erfüllen, können natürlich zusätzlich bedingte Anweisungen hinzugefügt werden, um die Kontrollstrukturen: die case
-Anweisung und möglicherweise die while
-Schleife zu begleiten.
Beispiel für die Verwendung einer case
-Anweisung zur Erfüllung Ihrer Anfrage
#! /bin/sh
# Für potenzielle Benutzer von BSD, oder anderen Systemen die kein
# Bash-Binary in /bin haben, wird das Skript an eine Bourne-Shell, z.B. /bin/sh gerichtet
# HINWEIS: Es scheint am besten zu sein, für die Behandlung von Benutzereingabefehlern oder
# Ausnahmen zu entscheiden, die durch die Eingabe erforderlich sind
# des Prompts in einer case-Anweisung (case-Kontrollstruktur),
echo Möchten Sie die Option ausführen: "(Y|N)"
read inPut
case $inPut in
# das Ausführen eines Befehls, umschlossen von
# Backticks (``) führt den Befehl aus
"Y") echo `Mach etwas Verrücktes`
;;
# je nach Szenario die andere Option ausführen
# oder als Standard belassen
"N") echo `eine andere Option ausführen`
;;
esac
exit
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.