wendzel.de

Postings in "Einsteiger-Blog":


Neuigkeiten für Linux-Users-Welcome
Mail/NNTP/RSS/Adressen-Synchronisierung mit Thunderbird und Unison unter Linux (Ubuntu)
Grundlegendes zur Linux-Sicherheit für Otto Normalverbraucher
Wie Sylpheed seine Versionsnummer auf Aktualität prüft
In welchem Geschäft kann ich Hardware kaufen, die unter Linux läuft?
Slackware jetzt auch offiziell für 64-Bit-Systeme
Schwedische/Spanische Sonderzeichen unter Linux
Shellskript Programmierung - Teil 7 (Variablen mit der Tastatur einlesen)
Slackware vs Ubuntu
Wer braucht schon Datenschutz im Web?
Warum in PHP programmieren?
Vorteile freier Software am Beispiel von Linux
Fortify gibt Studie zur Sicherheit von OpenSource-Software frei
PHP Registrierungen
C++-Code in HTML darstellen
Das n-Damen-Problem
PHP Includes absichern
Shellskript Programmierung - Teil 6 (Kommandosubstitution)
(void) printf(...) vs. printf(...)
Shellskript Programmierung - Teil 5 (Pipes/Ausgabeumlenkung)
Shellskript Programmierung - Teil 4 (Variablen)
Shellskript Programmierung - Teil 3 (Shells wechseln)
Shellskript Programmierung - Teil 2 (Welche Shells gibt es?)
Shellskript Programmierung - Teil 1 (Einführung)
In welcher Programmiersprache wurde Linux geschrieben?
Ordentliche Buchführung
C: [] ist kommutativ!


RSS Feed

 
Shellskript Programmierung - Teil 7 (Variablen mit der Tastatur einlesen)

Es ist mal wieder Zeit für einen neuen Teil meines Tutorials zur Shellskript-Programmierung. Dieses Mal gibt es sogar ein kleines Detail, dass erst in der 3. Auflage von 'Linux. Das distributionsunabhängige Handbuch' enthalten sein wird. Also ein Vorgriff.

Autor/Author: Steffen Wendzel Dipl.-Inform. (FH) Steffen Wendzel (Date/Datum: 2009-02-08-01:05, Hits: 1791)

Was Variablen sind, und wie man ihnen Werte direkt zuweisen kann, dass habe ich ja bereits in den vorherigen Teilen des Tutorials erklärt. Wie aber kann man Werte von der Tastatur einlesen (bspw. damit ein Benutzer seinen Namen oder ein Passwort eingeben kann)? Die Lösung ist einfach:

Zum Einlesen von Werten wird das Kommando read verwendet. read übergibt man als Parameter den Namen einer Variablen (aber ohne $-Zeichen). Anschließend kann man auf den Wert zugreifen. Hier ein kleines Beispiel zum Einlesen eines Namens:

$ read name
Steffen Wendzel # das ist die Eingabe des Benutzers
$ echo $name
Steffen Wendzel

Wie man sieht, wird die Eingabe des Benutzers angezeigt, was etwa bei Passwörtern nicht sicher ist. Je nach verwendeter Shell sollte read den Parameter '-s' unterstützten, der die Ausgabe der eingegebenen Zeichen auf dem Terminal unterdrückt. Mit diesem können dann auch "unsichtbare" Eingaben getätigt werden:

$ read -s name
(unsichtbare Eingabe)
$ echo $name
Steffen Wendzel

Soll nun noch ein schöner Eingabetext ausgegeben werden, was mit echo ja kein Problem ist, kann man auch noch verhindern, dass die Eingabe von Passwörtern und Benutzernamen in einer neuen Zeile angezeigt wird. Einige echo-Implementierungen kennen zu diesem Zweck den Parameter '-n', der nach der Ausgabe des Textes kein Zeilenende (also kein Newline-Zeichen (\n)) ausgibt.

$ echo -n "Benutzername: "; read name
Benutzername: sw
$ echo $name
sw

Was aber, wenn man nur ein Zeichen einlesen möchte und der Benutzer nicht die Return-Taste drücken müssen soll? Dazu kann der read-Parameter '-n [Anzahl Zeichen]' verwendet werden.

read -s -n 1 befehlszeichen
echo "Es wurde das Zeichen $befehlszeichen eingegeben"

-----------

Änderungen:

  • 18. Feb. 2009: '-s'-Parameter fehlte bei read-Aufruf für die unsichtbare Eingabe eines Wertes.

____________
Bookmark and Share


____

Kommentar verfassen / Post a comment:

Name:
Enter this Security Code:


 
Current Books


Einstieg in Linux



Linux. Das umfassende Handbuch