2016-06-15 5 views
0

Zuerst wird der Benutzer einen Dateinamen Time.sh aufrufen und geben Sie zwei Daten, nämlich StartTime, EndTime. Ich habe den Code in Time.sh-Datei, um die Daten zwischen StartTime und EndTime zu extrahieren. Ich verwende den folgenden Code.So erhalten Sie die Daten in Runtime und führen Sie den Code in Unix

#!/bin/bash 
read -p "Enter StartTime:" StartTime 
read -p "Enter EndTime:" EndTime 
awk -v StartTime="$StartTime" -v EndTime="$EndTime" -f Script.sh Test.log 

So in der Bash werde ich so etwas wie unten,

$ ./Time.sh 
Enter Start Time :(User will enter StartTime. Example:01:04:22) 
Enter End Time : (User will enter EndTime. Example:01:05:22) 

ich mag es simplyfy für den Benutzer wie sollte der Benutzer eingeben, um alle drei Daten in einer einzigen Zeile wie,

Time.sh 01:04:22 01:05:55 

Wie kann ich ändern, um das gleiche Ergebnis zu erhalten? Bitte Hilfe.

+0

Warum Sie Ihre awk-Skript rufen Sie ' Script.sh'. Wenn Sie eine Dateinamenerweiterung verwenden, erscheint es konventioneller, '.awk' zu verwenden; aber Unix ist nicht besonders wichtig, also verwirren Sie nur Menschen. – tripleee

+0

Cross-Site-Duplikat: http://unix.stackexchange.com/questions/32290/pass-command-line-arguments-to-bash-script – tripleee

Antwort

0

EDIT: Hinzugefügt Eingabevalidierung

können Sie die Argumente Befehlszeile wie folgt:

#!/bin/bash 
StartTime=$1 
EndTime=$2 

if [[ "$StartTime" > "$EndTime" ]]; then 
    echo "StartTime cannot be greater than EndTime" 
else 
    awk -v StartTime="$StartTime" -v EndTime="$EndTime" -f Script.sh Test.log 
fi 

Und dann laufen sie durch: ./Time.sh 01:04:22 01:05:55

+0

Vielen Dank @Avihoo Mamka.Ich habe den folgenden Code verwendet, um zu überprüfen, ob Startzeit ist größer als Endzeit. Aber ich kann den else Teil nicht ausführen. Egal zu welcher Zeit ich eingetreten bin, es zeigt nur den Echoteil. Gibt es einen Fehler in der Syntax? 'if [" $ 1 ">" $ 2 "]; dann echo "Starttime kann nicht größer als EndTime sein" \t sonst awk -v Starttime = "$ Starttime" -v EndTime = "$ EndTime" -f Script.sh test.log fi' – Vishwaroopa

+0

ich meine Antwort bearbeitet, und es hat für mich funktioniert. Überprüfen Sie dies. –

+0

Passen Sie auf, ich bearbeitete erneut, änderte '>' zu '-gt'. –

Verwandte Themen