Warum ist mein bash-string-Vergleich von zwei identischen strings immer falsch?

Ich versuche zu schreiben, ein einfaches kleines script zum Abfragen einer 3g-Verbindung, und wenn die Verbindung gelöscht hat, startet ein Wiedereinschalten gesichert werden.

Mein problem ist bei der überprüfung der Ausgabe des Befehls - zwei scheinbar gleiche strings werden nicht als gleich bewertet. Ich bin sicher, dass es ein noob-Fehler hier irgendwo!

#!/bin/bash

echo "Checking connection"
a="Not connected."
b=$(./sakis3g status --console)

if [[ "$a"!="$b" ]]; then 
    echo "Strings not equal:"
    echo "$a"
    echo "$b"
else 
    echo "Strings equal!!"
fi

Den output bei der Ausführung:

user@mypc:~$ ./test_3g.sh 
Checking connection
Strings not equal:
Not connected.
Not connected.

Beim laufen ./test_3g.sh | cat -A:

user@mypc:~$ ./test_3g.sh | cat -A
Checking connection$
Strings not equal:$
Not connected.$
Not connected.$
  • Es gibt keine störenden Zeilenumbruch am Ende, richtig?
  • Versuchen ./test_3g.sh | cat -A. Wenn Ihr cat unterstützt nicht die -A option, versuchen ./test_3g.sh | cat -v.
  • Ich glaube nicht, dass es alle überflüssigen Leerzeichen, aber würde glücklich sein, korrigiert auf, der. @Keith, ich habe die Ausgabe aus dem Rohr zu Katze -Eine auf die Frage.
InformationsquelleAutor jozzas | 2011-08-29
Schreibe einen Kommentar