在 Bash 中比较字符串

在 Bash 中比较字符串

这是我的代码(到目前为止):

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

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

由于此脚本的输出为“OK”,因此它也应该显示“Everything is fine”,因为串行端口发送的是“OK”。但我只收到“Not OK”消息,这对我来说很奇怪。第一个回显显示“OK”,但如果我想比较字符串,它就不再是“OK”了。

有谁能帮助我吗(我是 Linux 新手)

答案1

该命令sudo cat /dev/ttyUSB0不返回任何输出。请stty使用

sudo stty -F /dev/ttyUSB0

答案2

很可能其中有制表符或空格var。将cat结果传输到 以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)感谢大家的回答

相关内容