
これが私のコードです(これまでのところ):
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) 全ての回答に感謝します