Как использовать условный оператор shell:if в karaf/jline

Я пытаюсь условно выполнить команду, используя командную строку apache karaf, которая использует библиотеку jline.

Я не могу найти никакой документации по команде shell:if.

Например, в оболочке Linux это работает:

if [ "foo" = "foo" ]; then echo "good"; fi

Когда я меняю синтаксис для karaf на:

if [ "foo" = "foo" ] echo "good"

Я получаю сообщение об ошибке:

Error executing command shell:if: unable to convert argument condition with value '{foo=foo}' to type org.apache.felix.service.command.Function

Я пробовал кучу разного синтаксиса, но не могу понять.


person Don Corley    schedule 14.06.2012    source источник
comment
Вы пытались избежать скобок?   -  person Achim Nierbeck    schedule 09.10.2012


Ответы (2)


Синтаксис условия работает следующим образом:

>if {true} {echo yes} {echo no}
yes
> if {false} {echo yes} {echo no}
no

Эта команда использует замыкания для каждой части. Это позволяет вам, например, поместить if внутри каждого.

person Ross Judson    schedule 18.10.2012

Я решил свою проблему сравнения строк следующим образом:

if { $ENVIRONMENT equals "local" } {
    echo "*** Altering configuration for local deployment using mocks ***"
} {
    echo "*** Skipping ***"
}

Работает как шарм, но я должен согласиться, что в этой области не хватает документации. (сейчас 2014 год)

person Geert Schuring    schedule 17.12.2014