web-dev-qa-db-ja.com

演算子\>と\ <(文字列バージョンの比較)がシェルスクリプトで認識されない

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
...

問題がどこにあるのかわかりませんが、演算子\>または\<が認識されていないように見えます。何かアドバイスはありますか?

2
ruruskyi

使用するSolarisシステムはありませんが、スクリプトは/ bin/shが/ bin/bashへのリンクであることに依存しているため、shが理解できないbash構文を使用しているようです。

Shebangを#!/ bin/bashに変更すると、問題が解決することがわかりました。

バグレポートを提出する必要があります。うまくいけば、メンテナはそれをLinux中心ではないように修正します。

4
user9517