Skript, das Text prüft und in einer Datei speichert

Skript, das Text prüft und in einer Datei speichert

Können Sie ein Beispiel für ein Skript geben, in dem der Benutzer aufgefordert wird, Vor- und Nachnamen sowie sein Alter einzugeben? Und dann wird geprüft, ob Vor- und Nachnamen nur Buchstaben und das Alter nur Ziffern enthalten? Und wenn die Informationen korrekt sind, werden sie der Datei hinzugefügt.

Antwort1

Das klingt nach Hausaufgaben, also sollte niemand das Skript für Sie schreiben.

Stattdessen würde ich vorschlagen, den Umgang mit diesen beiden Befehlen zu erlernen:

Antwort2

Verwenden Sie diese Funktion echo, um eine Nachricht anzuzeigen und readeine Eingabezeile zu lesen. Dies sind integrierte Shell-Funktionen. Weitere Informationen finden Sie im Handbuch Ihrer Shell.

echo "What is your name?"
read -r name
echo "What is your age?"
read -r age

Um das Alter zu validieren, prüfen Sie, ob es andere Zeichen als eine Ziffer enthält. Die einzige portable integrierte Shell-Konstruktion, die dies ermöglicht, ist case(einige Shells haben Erweiterungen für die Regexp-Übereinstimmung).

case $age in
  *[!0-9]*) echo 1>&2 "Your age must consist of digits only."; exit 2;;
esac

Um den Namen zu validieren, überprüfen Sie, ob er nicht druckbare Zeichen enthält. (Beachten Sie, dassNamen können so ziemlich beliebige Zeichen enthalten; außerdem hat nicht jeder einen „Nachnamen“: Behandeln Sie einen Namen als beliebige Zeichenfolge.)

case $name in
  *[![:print:]]*) echo 1>&2 "Your name must consist of printable characters only."; exit 2;;
esac

Antwort3

Wenn es keine Hausaufgabe ist, würde ich vorschlagen, PERL oder Python zu verwenden und das PERL einfach wie folgt anzuzeigen:

$name = <STDIN>;
chomp $name;
($forename, $surname) = split(<regex>, $name);
if($surname =~ /<regex>/) execute something

Python wäre ähnlich, also schauen Sie sich einfach an, um fortzufahrenPERL-Regex. Das Skript ist nicht exakt, aber Sie verstehen, was ich meine.

verwandte Informationen