Compare as Strings no Bash

2

Heres 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", ele também deve escrever "Tudo está bem", já que a porta serial envia "OK". Mas eu só recebo a mensagem "Not OK" que é estranha para mim. O primeiro eco diz "OK", mas se eu quiser comparar a string não é mais "OK".

Alguém pode me ajudar (eu sou um novato linux)

    
por dHjnMju 14.07.2015 / 14:51

3 respostas

0

Provavelmente, há uma guia ou espaço em branco no var . Pipe cat resultará em tr para excluí-los.

  var=$(sudo cat /dev/ttyUSB0| tr -d " \t\n")
    
por 7171u 14.07.2015 / 15:14
1

O comando sudo cat /dev/ttyUSB0 não retorna nenhuma saída. Use stty em vez disso

sudo stty -F /dev/ttyUSB0
    
por A.B. 14.07.2015 / 15:45
0

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

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

( link ) Obrigado por todas as respostas

    
por dHjnMju 14.07.2015 / 18:40