运算符 \> 和 \

运算符 \> 和 \

我正在尝试运行 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 为中心。

相关内容