Оператор \> и \ <(сравнение версии строки) не распознаются в сценарии оболочки
Я пытаюсь запустить 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.