Назад | Перейти на главную страницу

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

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

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

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