Comparar strings no Bash

Comparar strings no Bash

Aqui está meu código (até agora):

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

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

Como a saída deste script é “OK” também deverá escrever “Tudo está bem”, pois a porta serial envia “OK”. Mas só recebo a mensagem "Não está bem", o que é estranho para mim. O primeiro eco diz "OK", mas se eu quiser comparar a string, não é mais "OK".

Alguém pode me ajudar (sou novato em Linux)

Responder1

O comando sudo cat /dev/ttyUSB0não retorna nenhuma saída. Use sttyem vez disso

sudo stty -F /dev/ttyUSB0

Responder2

Provavelmente há tabulação ou espaço em branco no arquivo var. Canalize cato resultado para trexcluí-los.

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

Responder3

Funciona se você remover os espaços em branco com os seguintes comandos:

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

(https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-variable) Obrigado por todas as respostas

informação relacionada