Linux脚本:if [“$ hostname”!=“(none)”]比较不起作用

时间:2014-02-26 17:26:02

标签: linux shell

我正在按照here的说明从服务器(ubuntu 12.04)获取主机名和IP地址。它工作正常。过了一会儿,我意识到服务器在离线时返回“(none)”作为主机名。现在我试图通过比较hostname和“(none)”来消除这个错误。我尝试了所有这些(*),但没有一个有效:

-- Getting hostname here    
hostname=$(grep "host-name" /var/lib/dhcp/dhclient.${interface}.leases | tail -n1 | cut -d"\"" -f2 | cut -d"." -f1)

-- Trying to compare it with "(none)"
    * if [ "$hostname" != "(none)" ] then ... else ... fi
    * if [[ $hostname != "(none)" ]] then ... else ... fi
    * nouser="(none)"  if [ "$hostname" != "$nouser" ] then ... else ... fi

我做错了什么?感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

]

后需要分号
if [ ... ]; then ...; else ...; fi

或换行:

if [ ... ]
then
   ...
else
   ...
fi

答案 1 :(得分:1)

这应该有用;

hostname="(foo)"
if [ "$hostname" == "(foo)" ]; then echo "equals"; else echo "not equals"; fi

答案 2 :(得分:0)

使用$HOSTNAME - 我的推理,用户可以验证其他$变量:

  

wilf @ comp:〜$ echo $ hostname
  
  wilf @ comp:〜$ echo $ HOSTNAME
  补偿
  维尔夫@排版:〜$

出于某种原因,$hostname似乎不起作用(Ubuntu 13.10,没有在其他Linux上试过这个)