Невозможно сравнить результат 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 

3 Solutions collect form web for “Невозможно сравнить результат lsb_release с строкой в ​​Bash”

В этом случае я предлагаю -is :

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

Это потому, что вывод из lsb_release -i использует вкладку вместо пространства:

 lsb_release -i|od -c 0000000 D istributor ID : \t 0000020 R ed H at E nterprise 0000040 S erver \n 

Обратите внимание на \t в конце первой строки. Включите это в свою строку сравнения, и она будет успешной:

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

Это не похоже на хорошее решение, но это работает:

 if [ "$(echo $(lsb_release -i))" = "Distributor ID: RedHatEnterpriseClient" ]; then echo yes; else echo no; fi 
Interesting Posts
Linux и Unix - лучшая ОС в мире.