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
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top