
Вот мой код (пока):
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) Спасибо за все ответы