So erstellen Sie ein Auswahlmenü mit der Auswahl der Anweisung in Bash Shell

So erstellen Sie ein Auswahlmenü mit der Auswahl der Anweisung in Bash Shell

Wir alle verwenden sehr oft Bash -Skripte, um langweilige und sich wiederholende Aufgaben zu automatisieren. Manchmal müssen wir in unseren Skripten fragen
Der Benutzer, der eine oder mehrere Auswahlmöglichkeiten interaktiv ausführt: In diesem Tutorial wird festgestellt.

In diesem Tutorial lernen Sie:

  • So verwenden Sie die Bash -Auswahlanweisung
  • So passen Sie die Auswahl der Menüaufforderung an
So erstellen Sie ein Auswahlmenü mit der Auswahl der Anweisung in Bash Shell

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilungsunabhängige
Software Die Bash -Hülle
Andere Keine besonderen Anforderungen
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Die Auswahlanweisung

Das Skripten ist eine der häufigsten Fähigkeiten, die ein Systemadministrator besitzen sollte, um sich wiederholte zu automatisieren
Aufgaben und machen sie weniger anfällig für Fehler. In nicht allzu komplexen Fällen ist die Shell das perfekte Werkzeug für den Job. Bash, die Bourne wieder Shell, ist die am häufigsten verwendete Hülle in der GNU/Linux -Welt. Diese Shell liefert die sehr nützliche wählen Stellungnahme. Sein Zweck wird auf folgende Weise beschrieben:

Wählen Sie Wörter aus einer Liste und führen Sie Befehle aus



Die Beschreibung ist ziemlich selbsterklärend. Mit der Erklärung können wir interaktiv eine Eingabe von einem Benutzer erhalten, wodurch eine nummerierte Liste von Auswahlmöglichkeiten generiert wird und ihn aufgefordert wird, eine auszuwählen. Mal sehen, wie es verwendet wird:

Wählen Sie den Namen [in Wörtern…;] Befehle aus. Erledigt

Die Syntax ist der eines Traditionellen sehr ähnlich Für Schleife in Bash, mit Ausnahme der Verwendung der wählen Stichwort. Die Auswahlanweisung funktioniert jedoch auf andere Weise. Lassen Sie uns ein Beispiel sehen. Angenommen, wir möchten einen Benutzer bitten, eine der in einem Verzeichnis enthaltenen Dateien auszuwählen. Hier ist, was wir schreiben könnten:

$ files = "$ (ls -a .) "$ SELECT Dateiname in $ file; do echo" $ file "; erledigt 1) Datei1 2) Datei2 3) Datei3 # #?

Erklären wir, was wir getan haben. Zunächst haben wir eine Liste aller im Verzeichnis vorhandenen Dateien (in diesem Fall das aktuelle Arbeitsverzeichnis) mit dem erhalten ls Befehl und Angabe der -A Option (kurz für --fast alles), um die implizite auszuschließen . Und Aus der zurückgegebenen Liste, die wir dem zugewiesen haben Dateien Variable.

Wir haben dann die verwendet, um die zu verwenden wählen Stellungnahme. Das obige ist ein sehr grundlegendes Beispiel: Wir haben das Ergebnis der Expansion der geliefert Datei Variable als Auswahlliste, die enthalten sind. Beachten Sie, dass wir es vermieden haben, die Erweiterung zu zitieren $ Dateien absichtlich, um zu erhalten Wortaufteilung: Wenn eine Erweiterung mit doppelten Zitaten zitiert wird Wortaufteilung wird unterdrückt, daher werden Leerzeichen nicht als Wörter genutzt und das Ergebnis der Expansion wird als Ganzes betrachtet. Dies ist nicht das, was wir in diesem Fall wollen: Wir müssen jedes Wort als Wahl im generierten Menü verwendet werden.



Die Wörter, die aus der Expansion der Variablen erhalten wurden Stderr (Standart Fehler). Jeder einzelne ist vorangegangen und mit einer Nummer zugeordnet, was der Benutzer verwendet, um sie zu verweisen. Nachdem alle Elemente angezeigt wurden, wird der Benutzer aufgefordert, seine Auswahl einzugeben. Was wird angezeigt ist die PS3 Eingabeaufforderung, die standardmäßig auf festgelegt ist #?.

Was passiert, wenn der Benutzer eine Auswahl ausführt? Mal sehen:

$ files = "$ (ls -a .) "$ SELECT Dateiname in $ files; do echo" Sie haben $ Dateiname "; erledigt 1) Datei1 2) Datei2 3) Datei3 # #? 1 Sie haben Datei1 # ausgewählt?

Die Wahl, die wir eingetragen haben, 1, wird aus dem gelesen Stdin (Standardeingabe) und wenn die eingegebene Nummer zu den verfügbaren ist, wird dem entsprechenden Wort („Datei1“ im Beispiel) dem zugeordnet,Dateinamen Variable. In unserem Beispiel haben wir angegeben echo "$ Dateiname" als der Befehl, der ausgeführt wird, sobald die Auswahl ausgeführt wird: als Ergebnis: Das ausgewählte Wort wird auf dem Bildschirm gedruckt. Die Nummer, die wir eingeben, um unsere Auswahl anzugeben, wird auch in einer Variablen gespeichert: ANTWORT.

Möglicherweise ist im obigen Beispiel etwas Seltsames passiert: Sobald wir unsere Wahl getroffen haben, wurden wir nach der Ausführung des Befehls erneut für eine Wahl aufgefordert, warum? Dies geschah, weil wir keine bereitgestellt haben brechen
Befehl. Wir können dies leicht beheben:

$ files = "$ (ls -a .) "$ select Dateiname in $ files; do echo" Sie haben $ Dateiname "; break; erledigt 1) Datei 2) Datei2 3) Datei3 # #? 1 Sie haben Datei1 ausgewählt1

Was ist, wenn wir keine Auswahl angeben? Die Eingabeaufforderung wird einfach wiederholt, bis wir es tun:

Wählen Sie den Dateinamen in $ files aus; echo "Sie haben $ Dateiname" ausgewählt; brechen; Fertig 1) Datei1 2) Datei2 3) Datei3 #? 1) Datei1 2) Datei2 3) Datei3 # #? 

Was ist, wenn wir eine Nummer eingeben, die stattdessen nicht in der Liste steht?? In diesem Fall wird die von uns verwendete Variable, die in unserem Fall verwendet wird Null.

Ändern der Auswahlaufforderung

Wie wir bereits gesehen haben, ist die Eingabeaufforderung, die von der Shell im Kontext einer ausgewählten Anweisung verwendet wird PS3 Eingabeaufforderung, was standardmäßig die hat #? String hat einen Wert. Dies ist nicht sehr benutzerfreundlich, daher möchten wir es vielleicht ändern und stattdessen etwas Beschreibenderes verwenden. Wie können wir das machen? Sehr einfach: Wir müssen den Wert der ändern PS3 Parameter:

$ Ps3 = "Bitte geben Sie Ihre Wahl ein:"


Das nächste Mal werden wir das verwenden wählen Aussage, wir werden die Änderung bemerken:

Wählen Sie den Dateinamen in $ files aus; echo "Sie haben $ Dateiname $ Antwort" ausgewählt; brechen; Fertig 1) Datei1 2) Datei2 3) Datei3 Geben Sie Ihre Auswahl ein: 

Die Änderung der Variablen ist nur für den aktuellen Shell -Abschnitt wirksam und wenn wir Export Die Variable, auch bei allen Kindern:

$ export ps3 = "Bitte geben Sie Ihre Wahl ein:"

Die Änderung bleibt jedoch vorübergehend, bis wir die festlegen PS3 Variable in der .bashrc Datei. PS3 ist nur eine der Eingaben, die in Bash verwendet werden.

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, wie man die Bash benutzt wählen Stellungnahme. Wir haben gesehen, wie es funktioniert und wie wir es verwenden können, um ein Auswahlmenü zu erstellen, um einen Benutzer interaktiv zu bitten, eine Auswahl auszuführen. Schließlich haben wir gesehen, wie Sie die Eingabeaufforderung im Auswahlmenü anpassen können, indem Sie die Shell ändern PS3 Parameter.

Verwandte Linux -Tutorials:

  • Mastering -Bash -Skriptschleifen beherrschen
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Verschachtelte Schleifen in Bash -Skripten
  • Dinge zu installieren auf Ubuntu 20.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Umgang mit Benutzereingaben in Bash -Skripten
  • GDB -Debugging -Tutorial für Anfänger
  • Hung Linux System? Wie man zur Befehlszeile entkommt und…
  • So richten Sie einen OpenVPN -Server auf Ubuntu 20 ein.04