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 soll dein Skript den Benutzer während der Ausführung nach Informationen fragen. Der Befehl read 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, was der Benutzer eingibt, und speichert es in der Variablen name.

Du kannst die Eingabeaufforderung übersichtlicher gestalten, indem du das Flag -p verwendest, das die Eingabeaufforderung 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 eine Eingabe, was professioneller wirkt. Das Flag -p nimmt den Eingabeaufforderungstext als Argument, gefolgt vom Variablennamen, in dem die Eingabe gespeichert werden soll.

Benutzereingaben machen Skripte interaktiv und anpassungsfähig. Anstatt Werte fest zu codieren, kannst du ein Skript schreiben, das je nach den Angaben des Benutzers bei jeder Ausführung anders funktioniert.

challenge icon

Aufgabe

Einfach

Erstelle ein Shell-Skript namens greeter.sh, das den Benutzer nach seiner Lieblingsfarbe fragt und anschließend eine Nachricht mit seiner Eingabe anzeigt.

Dein Skript sollte:

  1. Mit der Shebang-Zeile beginnen (#!/bin/bash)
  2. read mit dem Flag -p verwenden, um folgende Eingabeaufforderung 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)

Mach das Skript ausführbar und führe es anschließend mit blue als Eingabe aus. Dieses Terminal ist nicht interaktiv und kann nicht anhalten und darauf warten, dass du etwas eingibst. Leite die Antwort daher über eine Pipe an das Skript weiter:

echo "blue" | ./greeter.sh

Deine Ausgabe sollte folgendermaßen aussehen:

Nice! blue is a great color!

Hinweis: Die Eingabeaufforderung What is your favorite color? wird hier nicht angezeigt. read -p gibt seine Eingabeaufforderung nur aus, wenn die Eingabe von einer Tastatur kommt, hier kommt sie jedoch über die Pipe.

Setze jede von dir geschriebene Zeile in einfache Anführungszeichen: echo 'echo "Hello $name"' >> script.sh. Einfache Anführungszeichen verhindern, dass die Shell $name ersetzt, während die Datei geschrieben wird. Dadurch behält das Skript die Variable und erweitert sie bei der Ausführung. Doppelte Anführungszeichen würden den Wert sofort ersetzen.

Tipp: Erstelle das Skript Zeile für Zeile, indem du echo mit einer Umleitung verwendest. Nutze read -p "What is your favorite color? " color, um zur Eingabe aufzufordern und die Eingabe zu erfassen, und anschließend 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

Übe selbstständig: Terminal-Playground