lsb_release 결과를 Bash의 문자열과 비교할 수 없습니다

lsb_release 결과를 Bash의 문자열과 비교할 수 없습니다

아래 문자열 비교에서 뭔가 잘못된 일을 하고 있습니다. 변수를 설정하고 비교하면 작동하지만 값을 문자열에 복사할 수 없습니다. 무엇이 잘못되고 있는지 아는 사람이 있나요?

$ if [ "$(lsb_release -i)" = "Distributor ID: RedHatEnterpriseClient" ]; then echo yes; else echo no; fi
no
$ lsb_release -i
Distributor ID: RedHatEnterpriseClient
$ var="$(lsb_release -i)"
$ if [ "$(lsb_release -i)" = "$var" ]; then echo yes; else echo no; fi
yes

답변1

이 경우 다음을 권장합니다 -is.

if [ $(lsb_release -is) = "Debian" ]; then echo yes; else echo no; fi

답변2

이는 출력이 lsb_release -i공백 대신 탭을 사용하기 때문입니다.

lsb_release -i|od -c
0000000   D   i   s   t   r   i   b   u   t   o   r       I   D   :  \t
0000020   R   e   d   H   a   t   E   n   t   e   r   p   r   i   s   e
0000040   S   e   r   v   e   r  \n

\t번째 줄의 끝에 . 이것을 비교 문자열에 포함하면 성공합니다.

if [ "$(lsb_release -i)" = $'Distributor ID:\tRedHatEnterpriseServer' ]; ...

답변3

이것은 좋은 해결책은 아니지만 다음과 같이 작동합니다.

if [ "$(echo $(lsb_release -i))" = "Distributor ID: RedHatEnterpriseClient" ]; then echo yes; else echo no; fi

관련 정보