Operador \ e \ (comparação de versão de cadeia) não são reconhecidos no script de shell

2

Eu estou tentando rodar o nodetool da Casandra e receber avisos vindo do script .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

Na linha 53, o nodetool está chamando cassandra-env.sh.

Em cassandra-env.sh (linhas 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
...

Não sei ao certo onde está o problema, mas parece-me que o operador \> ou \< não é reconhecido. Qualquer conselho?

    
por ruruskyi 15.10.2014 / 12:55

1 resposta

4

Eu não tenho um sistema Solaris para entregar, mas parece que o script está confiando em / bin / sh sendo um link para / bin / bash e, como tal, está usando a sintaxe bash que sh não entende.

Como você descobriu, mudar o shebang para #! / bin / bash resolve o problema.

Você deve enviar um relatório de bug e esperamos que os mantenedores conserte que ele seja menos centrado no Linux.

    
por 15.10.2014 / 13:56