Menu
Coddy logo textTech

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 hält das Skript an und wartet darauf, dass der Benutzer etwas eingibt, und speichert diese Eingabe dann in einer Variablen.

So funktioniert es:

#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"

Wenn dieses Skript ausgeführt wird, gibt es die Frage aus, wartet darauf, dass der Benutzer seinen Namen eingibt und Enter drückt, und begrüßt ihn dann. Der Befehl read nimmt alles entgegen, was der Benutzer eingibt, und speichert es in der Variablen name.

Sie können die Eingabeaufforderung übersichtlicher gestalten, indem Sie das Flag -p verwenden, das die Eingabeaufforderungsmeldung 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 in derselben Zeile auf die Eingabe, was eleganter aussieht. Das Flag -p nimmt den Aufforderungstext als Argument entgegen, gefolgt von dem Variablennamen, in dem die Eingabe gespeichert werden soll.

Benutzereingaben machen Skripte interaktiv und anpassungsfähig. Anstatt Werte fest im Code zu hinterlegen, können Sie ein einzelnes Skript schreiben, das je nach den Eingaben des Benutzers bei jedem Ausführen unterschiedlich reagiert.

challenge icon

Aufgabe

Einfach

Erstellen 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:

  1. Mit der Shebang-Zeile beginnen (#!/bin/bash)
  2. read mit dem Flag -p verwenden, um folgenden Prompt anzuzeigen: What is your favorite color?
  3. Die Eingabe in einer Variable namens color speichern
  4. echo verwenden, um Folgendes 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 dann mit blue als Eingabe aus. Dieses Terminal ist nicht interaktiv — es kann nicht anhalten und auf Ihre Eingabe warten — leiten Sie die Antwort daher über eine Pipe an das Skript weiter:

echo "blue" | ./greeter.sh

Ihre Ausgabe sollte wie folgt aussehen:

Nice! blue is a great color!

Hinweis: Der Prompt What is your favorite color? wird hier nicht angezeigt. read -p gibt seinen Prompt nur aus, wenn die Eingabe über eine Tastatur erfolgt, und hier kommt sie aus der Pipe.

Tipp: Erstellen Sie das Skript Zeile für Zeile mit echo und Umleitung. Verwenden Sie read -p "What is your favorite color? " color, um nach der Eingabe zu fragen und sie zu erfassen, und dann echo "Nice! $color is a great color!", um das Ergebnis anzuzeigen.

Probier es selbst

Terminal
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen