【发布时间】:2013-11-08 20:53:04
【问题描述】:
我在 bash 脚本中有一个简单的主机名检查:
if [[ `hostname` -eq "cps1214" ]]
then
JAVA_HOME=/usr/local/jdk1.6.0_21
fi
在我们旧的 SuSE 8 系统上,这可以正常工作。在我们较新的 CentOS 系统上,这会导致错误:
[[: dev.example.com: 语法错误:算术运算符无效 (错误标记是“.example.com”)
我不太确定这里有什么问题。我的理解是-eq是明确用于字符串比较的,hostname显然是返回一个字符串,右边也是一个字符串。为什么抱怨算术?
【问题讨论】:
-
改用 "$(hostname)" == "cps1214"
-
我想你把 Bash 和 Perl 弄糊涂了。 Bash
-eq专门用于数字比较,而不是字符串。
标签: string bash comparison