Bashで文字列を比較する

Bashで文字列を比較する

これが私のコードです(これまでのところ):

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

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

このスクリプトの出力は「OK」なので、シリアル ポートが「OK」を送信するため、「すべて正常です」と書き込まれるはずです。しかし、奇妙なことに「Not OK」というメッセージしか表示されません。最初のエコーは「OK」ですが、文字列を比較すると「OK」ではなくなります。

誰か助けてくれませんか(私は Linux 初心者です)

答え1

このコマンドはsudo cat /dev/ttyUSB0出力を返しません。stty代わりに

sudo stty -F /dev/ttyUSB0

答え2

varおそらく、 . Pipecat結果にタブまたは空白が含まれています。trそれらを削除します。

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

答え3

次のコマンドで空白を削除すると機能します。

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

https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-variable) 全ての回答に感謝します

関連情報