Bash에서 문자열 비교

Bash에서 문자열 비교

내 코드는 다음과 같습니다(지금까지).

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) 모든 답변에 감사드립니다.

관련 정보