2016-04-08 8 views
0

Ich bin neu in SkriptingBefehle innerhalb If-Bedingung

Kann mir jemand helfen, was mit meinem unten Skript falsch ist. Ich erhalte einen Fehler.

if `tail -2 jeevagan/sample/logs.txt | head -1 | grep "Start Outputing Report"` = TRUE && `tail -1 jeevagan/sample/logs.txt | grep "Start Outputing Report"` = TRUE 

then 
     echo "report error" 
else 
     echo "report good" 
fi 

in den Protokollen Datei, habe ich Protokolle wie unten:

2016-04-07 06:57:36,248 INFO : Finished Outputing Report:, Format:EXCEL, Locale: en_IN 
2016-04-07 07:06:52,812 INFO : Start Outputing Report:, Format:EXCEL, Locale: en_IN 
2016-04-07 06:52:56,451 INFO : Finished Outputing Report:, Format:EXCEL, Locale: en_IN 
2016-04-07 06:52:56,451 INFO : Finished Outputing Report:, Format:EXCEL, Locale: en_IN 
2016-04-07 07:06:52,812 INFO : Start Outputing Report:, Format:EXCEL, Locale: en_IN 
2016-04-07 07:06:52,812 INFO : Start Outputing Report:, Format:EXCEL, Locale: en_IN 
2016-04-07 07:06:52,812 INFO : Start Outputing Report:, Format:EXCEL, Locale: en_IN 

Antwort

1

Von 'man bash' auf meinem solaris System:

command1 && command2 
command2 is executed if, and only if, command1 returns an 
exit status of zero. 

der Exit-Status Um zu untersuchen, ein ausführen Befehl, dann

echo $? 

So

tail -2 log.txt | head -1 | grep "Start Outputing Report" 

Returns 0

So kann man sie aneinanderreihen wie so

tail -2 log.txt | head -1 | grep "Start Output" && tail -1 log.txt | grep "Start Output" && echo "report error" 

oder ihnen Skript heraus so etwas wie

tail -2 log.txt | head -1 | grep "Start Output" && tail -1 log.txt | grep "Start Output" 

return=$? 

if [[ $return == 0 ]]; then 
    echo "report error" 
else 
    echo "report good" 
fi