我正在尝试运行 Casandra nodetool 并收到来自 .sh 脚本的警告。
[root@d11ca4cc-fa95-c8a9-e133-e64c434f0e6f ~]# nodetool status
/opt/local/share/cassandra/bin/nodetool[53]: .[97]: [: <: unknown operator
/opt/local/share/cassandra/bin/nodetool[53]: .[102]: [: <: unknown operator
prtconf: devinfo facility not available
/opt/local/share/cassandra/bin/nodetool[53]: .[222]: [: <: unknown operator
在第 53 行,nodetool 正在调用 cassandra-env.sh。
在 cassandra-env.sh 中(第 97、102、222 行):
...
97 if [ "$JVM_VERSION" \< "1.7" ] ; then
...
if [ "$JVM_VERSION" \< "1.8" ] && [ "$JVM_PATCH_VERSION" -lt "25" ] ; then
...
if { [ "$JVM_VERSION" \> "1.7" ] && [ "$JVM_VERSION" \< "1.8.0" ] && [ "$JVM_PATCH_VERSION" -ge "60" ]; } || [ "$JVM_VERSION" \> "1.8" ] ; then
...
我不确定问题出在哪里,但在我看来,这似乎是操作员\>
或\<
无法识别。有什么建议吗?
答案1
我手边没有 Solaris 系统,但看起来该脚本依赖于 /bin/sh 作为到 /bin/bash 的链接,因此使用了 sh 无法理解的 bash 语法。
正如您所发现的,将 shebang 更改为 #!/bin/bash 可以解决问题。
您应该提交一个错误报告,希望维护人员能够修复它,使其不那么以 Linux 为中心。