Linux脚本:if 比较不起作用

我从服务器(Ubuntu的12.04)获取主机名和IP地址, 这里解释。 它工作正常。 过了一段时间,我意识到服务器在离线状态下返回“(none)”作为主机名。 现在我试图通过比较主机名和“(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 

我究竟做错了什么 ? Thx任何帮助。

你需要一个分号]

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

或换行符:

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

这应该工作;

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

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

wilf @ comp:〜$ echo $ hostname

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

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