#!/bin/bash
while :
do
echo "Please enter your tittle:"
read TITTLE
echo "Please enter your surname:"
read SURNAME
echo "Please enter your ID No."
read ID
if [ "$TITTLE" = "" ] || [ "${TITTLE//[!0-9]}" != "" ];
then
echo "Enter your valid tittle without special characters."
echo "Please try again."
continue
fi
if [ "$SURNAME" = "" ] || [ "${SURNAME//[!0-9]}" != "" ];
then
echo "Enter your valid surname without special characters."
echo "Please try again."
continue
fi
if [ "$ID" = "" ] || [ "${ID//[0-9]}" != "" ];
then
echo "Enter your valid ID No. without special characters."
echo "Please try again"
else
echo "Thank you" $TITTLE $SURNAME
break
fi
done
Antwort1
Annahme: $SURNAME
ist der Benutzername
Um den Inhalt von in eine Datei zu schreiben , $TITTLE
die nach dem Inhalt von benannt ist , können Sie Ihren Code wie folgt ändern:$SURNAME
$ID
$SURNAME
...
else
echo "Thank you $TITTLE $SURNAME, your information will be stored in \"$SURNAME.txt\""
echo -e "$TITTLE\n$SURNAME\n$ID" > "$SURNAME.txt"
break
...
wobei -e es echo ermöglicht, es \n
als „Newline“ zu erkennen.
Antwort2
Wie ich in meiner Antwort auf die entsprechende Frage schrieb:Skript, das 3 Eingaben validiert", kann die Ausgabe des Skripts umgeleitet werden durch
$ ./script.sh >"$USER.txt"
wobei $USER
durch Ihren Benutzernamen ersetzt wird (diese Variable sowie $LOGNAME
wird normalerweise von der Shell oder dem System auf Ihren Benutzernamen gesetzt).
Wenn Sie den vom Skript gelesenen Nachnamen verwenden möchten, ändern Sie die Zeile
echo "Thank you" $TITTLE $SURNAME
hinein
echo "Thank you $TITTLE $SURNAME" >"$SURNAME.txt"
Dies würde das Ergebnis echo
in eine Datei umleiten, deren Name sich aus dem vom Benutzer eingegebenen Nachnamen ergibt, wobei .txt
am Ende des Dateinamens hinzugefügt wird (dies ist natürlich optional). Beachten Sie, dass nicht geprüft wird, ob dadurch eine vorhandene Datei überschrieben wird.
Um diese auch auf dem Terminal auszugeben, duplizieren Sie die Daten mit tee
:
echo "Thank you $TITTLE $SURNAME" | tee "$SURNAME.txt"
Um alle drei Datenbits in die Datei auszugeben, verwenden Sie beispielsweise
{
printf 'ID = %s\n' "$ID"
printf 'surname = %s\n' "$SURNAME"
printf 'title = %s\s' "$TITTLE"
} >"$SURNAME.txt"
Durch die Gruppierung einer Reihe von Befehlen in geschweiften Klammern können Sie die gesamte Ausgabe der Gruppe in einer einzigen Umleitung umleiten.
Sehen "Warum ist printf besser als echo?", warum ich beim Drucken variabler Zeichenfolgen printf
eher anstelle von verwende .echo