Command-Line

無法將 lsb_release 結果與 Bash 中的字元串進行比較

  • July 6, 2017

我在下面的字元串比較中做錯了。如果我設置一個變數並比較它,它會起作用,但我不能將值複製到一個字元串。有誰知道出了什麼問題?

$ 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' ]; ...

引用自:https://unix.stackexchange.com/questions/375771