![So vergleichen Sie Zeichenfolgen in KSH](https://rvso.com/image/97233/So%20vergleichen%20Sie%20Zeichenfolgen%20in%20KSH.png)
Ich möchte das Ergebnis eines Jobs überprüfen und eine Aktion ausführen FAILED
.
Erstens: Ich greppe das letzte Wort der Zeile in meiner Anwendungsprotokolldatei (für die zuletzt verarbeitete Datei ( $processedfilename
)):
check1=$(grep "$processedfilename" "$logfile" | grep "anotherword" | \
grep "FAILED" | tail -1 | awk '{print $NF}')
Das führt zu [FAILED]
.
Jetzt möchte ich das Ergebnis überprüfen
if [ $check1 -eq "[[FAILED]" ]
then
oder
if [ $check1 -eq "\[FAILED]" ]
then
Es gibt immerArithmetiksyntaxfehler.
Was ist die korrekte zu überprüfende Syntax [FAILED]
?
Antwort1
Variablen sollten immer in doppelte Anführungszeichen gesetzt werden. Und Sie benötigen =
für Zeichenfolgen das Gleiche. Also:
if [ "$check1" = "[FAILED]" ]; then
Antwort2
Sie führen einen arithmetischen Vergleich durch, indem Sie verwenden -eq
, was zu dem Fehler führt. Sie müssen den Zeichenfolgenvergleich durch =
(oder ==
innerhalb [[
) durchführen und dafür reicht die Verwendung von Anführungszeichen aus:
[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]