Benutzereingabe in Skripten
Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy — Lektion 69 von 82.
Variablen sind nützlich, aber manchmal möchten Sie, dass Ihr Skript den Benutzer während der Ausführung nach Informationen fragt. Der read-Befehl pausiert das Skript und wartet, bis der Benutzer etwas eingibt, dann speichert er diese Eingabe in einer Variable.
So funktioniert es:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Wenn dieses Skript ausgeführt wird, druckt es die Frage aus, wartet, bis der Benutzer seinen Namen eingibt und Enter drückt, und begrüßt ihn dann. Der read-Befehl nimmt alles, was der Benutzer eingibt, und speichert es in der Variable name.
Sie können den Prompt kompakter gestalten, indem Sie die -p-Option verwenden, die die Prompt-Nachricht und die Eingabe in derselben Zeile kombiniert:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Dies zeigt Enter your name: an und wartet auf Eingabe in derselben Zeile, was eleganter aussieht. Die -p-Option nimmt den Prompt-Text als Argument, gefolgt vom Variablennamen zur Speicherung der Eingabe.
Benutzereingaben machen Skripte interaktiv und anpassbar. Anstatt Werte fest einzukodieren, können Sie ein Skript schreiben, das je nach dem, was der Benutzer jedes Mal bereitstellt, wenn er es ausführt, anders funktioniert.
Aufgabe
EinfachErstellen Sie ein Shell-Skript namens greeter.sh, das den Benutzer nach seiner Lieblingsfarbe fragt und dann eine Nachricht mit seiner Eingabe anzeigt.
Ihr Skript sollte:
- Mit der Shebang-Zeile beginnen (
#!/bin/bash) readmit der-p-Flag verwenden, um folgendes Prompt anzuzeigen:What is your favorite color?- Die Eingabe in einer Variable namens
colorspeichern echoverwenden, um auszugeben:Nice! [color] is a great color!(wobei [color] die Eingabe des Benutzers ist)
Machen Sie das Skript ausführbar und führen Sie es aus. Wenn aufgefordert, geben Sie blue als Ihre Antwort ein.
Ihre Ausgabe sollte sein:
What is your favorite color? blue
Nice! blue is a great color!Tipp: Erstellen Sie das Skript Zeile für Zeile mit
echound Umleitung. Verwenden Sieread -p "What is your favorite color? " color, um abzufragen und die Eingabe zu erfassen, dannecho "Nice! $color is a great color!", um das Ergebnis anzuzeigen.
Spickzettel
Der read-Befehl pausiert das Skript und wartet auf Benutzereingabe, dann speichert er sie in einer Variable:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Verwenden Sie die -p-Option, um den Prompt und die Eingabe in derselben Zeile anzuzeigen:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Die -p-Option nimmt den Prompt-Text als Argument, gefolgt vom Variablennamen, um die Eingabe zu speichern.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Verzeichnisse
Ein Verzeichnis erstellenEin Verzeichnis kopierenEin Verzeichnis verschieben und umbenennenEin Verzeichnis löschenZusammenfassung - Verzeichnisoperationen7Dateiinhalt
Head und TailWortanzahlSort-BefehlUniq-BefehlGrep GrundlagenGrep mit FlagsZusammenfassung - Textdetektiv10Log-Analyzer-Projekt
ProjektübersichtAnzeigen der Logdatei13Grundlagen der Shell-Skripte
Was ist ein Shell-SkriptEin Skript erstellen und ausführenVariablen in SkriptenBenutzereingabe in SkriptenIf-AnweisungFor-SchleifeWhile-SchleifeZusammenfassung - Zahlenraten2Navigation
Arbeitsverzeichnis anzeigenDateien auflistenVerzeichnis wechselnAbsolute vs. relative PfadeHome- und Root-VerzeichnisZusammenfassung - Den Weg finden8Umleitung
StandardausgabeIn eine Datei überschreibenAn eine Datei anhängenStandardeingabeStandardfehlerausgabeZusammenfassung – Log-Builder3Dateien
Eine Datei erstellenEine Datei lesenEine Datei kopierenEine Datei verschieben und umbenennenEine Datei löschenZusammenfassung - Dateioperationen6Wildcards und Muster
Die Sternchen-WildcardDie Fragezeichen-WildcardKlammer-WildcardsWildcards kombinierenZusammenfassung - Selektive Operationen9Pipes
Was ist eine PipeVerkettung zweier BefehleVerkettung mehrerer BefehlePipe mit GrepZusammenfassung - Daten-Pipeline