Оператор \> и \ <(сравнение версии строки) не распознаются в сценарии оболочки

Я пытаюсь запустить 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, и поэтому использует синтаксис bash, который sh не понимает.

Как вы обнаружили, изменение shebang на #!/ Bin / bash решает проблему.

Вы должны отправить отчет об ошибке, и, надеюсь, сопровождающие исправят его, чтобы он был менее ориентирован на Linux.

Другие вопросы по тегам