2016-06-29 5 views
-2

Genau wie der Titel sagt. Einfache if-Anweisung in Bash. Ich habe versucht herauszufinden, warum diese Schleife nicht funktioniert und ich habe seit zwei Tagen nichts mehr gefunden. Einblick würde geschätzt werden.Bash if/else Schleife Fehler

declare -r TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S,%3N") 

CHECK="$(grep -c "$TIMESTAMP" /var/log/host/logname.log)" 
if [ "$CHECK" -eq 0 ] 
then 
    COLOR="green" 
elif [ 0 -lt "$CHECK" ] && [ "$CHECK" -le 5 ] 
    COLOR="yellow" 
else 
    COLOR="red" 
fi 

Die COLOR var ist etwas, das durch das System vorgegeben ich verwende. Die rot/gelb/grün sind alle korrekt, etwas in meiner Syntax oder Logik ist das Problem, obwohl ich mich bemüht habe, das zu bestimmen. Vielen Dank!

EDIT: Mein Fehler. Früher Morgen und die Frage war voll von Tippfehlern. Ich habe sie behoben. Fehler ist wie folgt,

syntax error near unexpected token `else' 
`  else' 
+3

Ich kann Ihre for-Schleife nicht sehen. Und die Syntaxhervorhebung auf dem Code sollte bereits verdächtig sein: Finden Sie die schließenden Anführungszeichen des Strings in der ersten Zeile. Auch "es funktioniert nicht" ist nie genug Information. –

+2

Bitte fügen Sie den Fehler ein, den Sie erhalten !! – Fazlin

+0

Ich sehe kein schließendes '" 'in der ersten Zeile Ihres Skripts (' date' Befehl) – Fazlin

Antwort

0

Sie einige Fehler haben, diese

declare -r TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S,%3N") 
CHECK="$(grep -c "$TIMESTAMP" /var/log/host/logname.log)" 
if [ "$CHECK" -eq 0 ] 
then 
    COLOR="green" 
elif [ 0 -lt "$CHECK" ] && [ "$CHECK" -le 5 ] 
then 
    COLOR="yellow" 
else 
    COLOR="green" 
fi 
+1

Sie haben 'fi' vergessen :) – Fazlin

+0

ja, danke. :) – sozkul

+0

schließen, aber das wird immer noch nicht funktionieren. – SaintHax

1

helfen können Sie ein Angebot vergessen, und dann a.

declare -r TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S,%3N") # missing " here 

CHECK="$(grep -c "$TIMESTAMP" /var/log/host/logname.log)" 
if [ "$CHECK" -eq 0 ]; then 
    COLOR="green" 
elif [ 0 -lt "$CHECK" ] && [ "$CHECK" -le 5 ]; then # missing then was here 
    COLOR="yellow" 
else 
    COLOR="red" 
fi 
+0

Ah! Ich wusste nicht, dass ich nach der Verwendung von else/if eine Sekunde "dann" brauchte. Löste mein Problem. Ich danke dir sehr! – Setarcos

+0

BTW, würde ich persönlich die Großbuchstaben für Ihre schreibgeschützte Variable und Kleinbuchstaben die anderen vorbehalten. Es ist eine praktische Konvention, wenn Sie später Skripte erstellen und warten. – SaintHax

+0

Wählen Sie nun eine der Antworten als die richtige-- Mir ist es egal, es ist nur SO rep :-) – SaintHax