Solaris

運算符 > 和 <(字元串版本比較)在 shell 腳本中無法辨識

  • October 25, 2014

我正在嘗試執行 Casandra nodetool 並收到來自 .sh 腳本的警告。

[root@d11ca4cc-fa95-c8a9-e133-e64c434f0e6f ~]# nodetool status
/opt/local/share/cassandra/bin/nodetool[53]: .[97]: [: &lt;: unknown operator
/opt/local/share/cassandra/bin/nodetool[53]: .[102]: [: &lt;: unknown operator
prtconf: devinfo facility not available
/opt/local/share/cassandra/bin/nodetool[53]: .[222]: [: &lt;: unknown operator

在第 53 行,nodetool 正在呼叫 cassandra-env.sh。

在 cassandra-env.sh(第 97、102、222 行)中:

...
97  if [ "$JVM_VERSION" \&lt; "1.7" ] ; then
...
if [ "$JVM_VERSION" \&lt; "1.8" ] && [ "$JVM_PATCH_VERSION" -lt "25" ] ; then
...
if { [ "$JVM_VERSION" \&gt; "1.7" ] && [ "$JVM_VERSION" \&lt; "1.8.0" ] && [ "$JVM_PATCH_VERSION" -ge "60" ]; } || [ "$JVM_VERSION" \&gt; "1.8" ] ; then
...

我不確定問題出在哪裡,但在我看來它像操作員\&gt;\&lt;未被辨識。有什麼建議嗎?

我手頭沒有 Solaris 系統,但似乎該腳本依賴 /bin/sh 作為 /bin/bash 的連結,因此使用 sh 不理解的 bash 語法。

正如您所發現的,將 shebang 更改為 #!/bin/bash 可以解決問題。

您應該送出一份錯誤報告,並希望維護人員將其修復為不以 Linux 為中心。

引用自:https://serverfault.com/questions/637130