
내 코드는 다음과 같습니다(지금까지).
var=$(sudo cat /dev/ttyUSB0)
echo "$var"
if [ "$var" == "OK" ]
then
echo "Everything is fine"
else
echo "Not OK"
fi
이 스크립트의 출력은 "OK"이므로 직렬 포트가 "OK"를 전송하므로 "Everything is 괜찮습니다"라고 써야 합니다. 하지만 "Not OK"라는 메시지만 나오는데, 이상하네요. 첫 번째 에코는 "OK"라고 말하지만 문자열을 비교하려면 더 이상 "OK"가 아닙니다.
누구든지 나를 도울 수 있습니까? (나는 리눅스 초보자입니다)
답변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) 모든 답변에 감사드립니다.