Vergleichen von Zeichenfolgen in Bash

Vergleichen von Zeichenfolgen in Bash

Hier ist mein Code (bisher):

var=$(sudo cat /dev/ttyUSB0)
echo "$var"

if [ "$var" == "OK" ]
    then
        echo "Everything is fine"
    else
        echo "Not OK"
fi

Da die Ausgabe dieses Skripts "OK" ist, sollte es auch "Alles ist in Ordnung" schreiben, da der serielle Port "OK" sendet. Aber ich bekomme nur die Meldung "Nicht OK", was für mich seltsam ist. Das erste Echo sagt "OK", aber wenn ich den String vergleichen möchte, ist es nicht mehr "OK".

Kann mir jemand helfen (ich bin ein Linux-Neuling)

Antwort1

Der Befehl sudo cat /dev/ttyUSB0gibt keine Ausgabe zurück. Verwenden Sie sttystattdessen

sudo stty -F /dev/ttyUSB0

Antwort2

Wahrscheinlich sind im var.Pipe- catErgebnis Tabulatoren oder Leerzeichen enthalten, um trdiese zu löschen.

  var=$(sudo cat /dev/ttyUSB0| tr -d " \t\n")

Antwort3

Es funktioniert, wenn Sie die Leerzeichen mit den folgenden Befehlen entfernen:

var="${var#"${var%%[![:space:]]*}"}"    
var="${var%"${var##*[![:space:]]}"}"

(https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-variable) Danke für alle Antworten

verwandte Informationen