Command-Line
無法將 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
在這種情況下,我建議
-is
:if [ $(lsb_release -is) = "Debian" ]; then echo yes; else echo no; fi
這是因為輸出
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' ]; ...