![lsb_release 결과를 Bash의 문자열과 비교할 수 없습니다](https://linux55.com/image/114927/lsb_release%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20Bash%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC%20%EB%B9%84%EA%B5%90%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
아래 문자열 비교에서 뭔가 잘못된 일을 하고 있습니다. 변수를 설정하고 비교하면 작동하지만 값을 문자열에 복사할 수 없습니다. 무엇이 잘못되고 있는지 아는 사람이 있나요?
$ 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