Solaris
運算符 > 和 <(字元串版本比較)在 shell 腳本中無法辨識
我正在嘗試執行 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 ...
我不確定問題出在哪裡,但在我看來它像操作員
\>
或\<
未被辨識。有什麼建議嗎?
我手頭沒有 Solaris 系統,但似乎該腳本依賴 /bin/sh 作為 /bin/bash 的連結,因此使用 sh 不理解的 bash 語法。
正如您所發現的,將 shebang 更改為 #!/bin/bash 可以解決問題。
您應該送出一份錯誤報告,並希望維護人員將其修復為不以 Linux 為中心。