我在bash脚本中有一个简单的主机名检查:
if [[ `hostname` -eq "cps1214" ]]
then
JAVA_HOME=/usr/local/jdk1.6.0_21
fi
在我们的旧SuSE 8系统上,这很好用。在我们较新的CentOS系统上,这会导致错误:
[[: dev.example.com: syntax error: invalid arithmetic operator (error token is ".example.com")
我不确定这里的问题是什么。我的理解是-eq
明确用于字符串比较,hostname
显然返回一个字符串,右边也是一个字符串。为什么抱怨算术?
答案 0 :(得分:2)
因为-eq
不是用于字符串比较,而是算术运算符,如bash文档中所述。
您可以将-eq
与=
或==
交换,您也可以。