Eingabeaufforderung/Eingabe des Shell-Skript-Benutzers
Frage
Dies ist ein grobes Korn-Shell-Skript, das jemand anderes geschrieben hat.Ich weiß nicht viel über die Verwendung der Shell-Syntax und bin mir nicht einmal sicher, ob dies möglich ist.
Gibt es eine Möglichkeit für mich, diese Datei auszuführen und zur Eingabe des Datums aufgefordert zu werden, sodass ich nicht jedes Mal manuell in das Skript gehen und es ändern muss?
Ich möchte beispielsweise „1/12/09“ durch eine Variable ersetzen, die einer Benutzereingabeaufforderung entnommen wird.
#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
Lösung
Wenn Sie aufgefordert werden sollen (wie bei Bestehen des Zeitpunkt Gegensatz als Parameter), verwenden Sie die folgende Logik (oder so ähnlich):
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
done
Das Schleife wird auch weiterhin für das Datum aufzufordern, bis der Benutzer etwas (etwas) andere als eine einfache RETURN eintritt.
Wenn Sie einige einfache Validierung hinzufügen möchten, und Sie verwenden eine Version von KSH, die ksh93 oder besser, so etwas wie das ist:
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
if [[ $date =~ ^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}$ ]]
then
break
fi
date=
done
Siehe der ksh93 Manpage für weitere Informationen.
Andere Tipps
In der Regel von einem Shell-Skript Befehlszeilenargumente zugegriffen werden kann wie:
$0, $1, ... $N
So können Sie das Datum fest einprogrammiert ersetzen könnten wie:
./room_xls.pl $1
Und führen Sie es wie
./myscript 1/12/09
$1 ist das erste Befehlszeilenargument.Dies geht bis zu 9 $.Überprüfen Sie dies Lernprogramm für eine grundlegendere ksh-Syntax.