So erstellen Sie ein Auswahlmenü mit der Auswahl der Anweisung in Bash Shell
- 4234
- 709
- Marleen Weight
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
Softwareanforderungen und Konventionen verwendet
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