
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
Antwort2
Verwenden Sie diese Funktion echo
, um eine Nachricht anzuzeigen und read
eine 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.