Comparar cadenas en Bash

Comparar cadenas en Bash

Aquí está mi código (hasta ahora):

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

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

Como el resultado de este script es "OK", también debería escribir "Todo está bien", ya que el puerto serie envía "OK". Pero sólo recibo el mensaje "No está bien", lo cual me resulta extraño. El primer eco dice "OK", pero si quiero comparar la cadena ya no es "OK".

¿Alguien puede ayudarme (soy un novato en Linux)?

Respuesta1

El comando sudo cat /dev/ttyUSB0no devuelve ningún resultado. Usar sttyen su lugar

sudo stty -F /dev/ttyUSB0

Respuesta2

Probablemente haya una pestaña o un espacio en blanco en el archivo var. Canalice catel resultado para treliminarlos.

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

Respuesta3

Funciona si eliminas los espacios en blanco con los siguientes comandos:

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

(https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-variable) Gracias por todas las respuestas.

información relacionada