'невозможно подключить kprobe, запись зонда может не существовать' при выполнении трассировки -bpfcc

the problem is that when i run my script without argument i just want to read the usage() fonction.

Хорошо, рассмотрите структуру вашего скрипта и тот факт, что оболочка выполняет его, начиная с самого верха:

FLOWER_STATUS="/etc/init.d/flowerGenesisPlugin status"
SOLR_STATUS=$(ps -f -u alfresco|grep -v UID)
ALFRESCO_STATUS=$(ps -f -u alfresco|grep Dalfresco|grep -v UID)
POSTGRES_STATUS=$(ssh -t root@slql-fresc-bdd1 "ps -f -u alfresco|grep postgres|grep -v UID")

usage() {
  ...
}

case "$1" in
    status) status ;;
    start)   start ;;
    stop)    stop ;;
    restart) stop; start ;;
    *) usage >&2 ;;
esac

Самое первое, что у вас есть в сценарии, это задания для POSTGRES_STATUSи друзей. Они содержат подстановки команд, которые запускаются во время назначения . В оболочке нет ленивых вычислений, как в make.(Кроме того, с чем вы соорудили eval, но не будем об этом.)

Чтобы избежать этого, либо переместите проверку аргументов наверх, а присваивания под ней:

usage() {
   echo...
}

case "$1" in 
  ...
   *) usage; exit 1 ;;
esac

POSTGRES_STATUS=...

Или также поместите присваивания в функцию и вызывайте ее только после проверки.

usage() {
    echo...
}
check() {
    case "$1" in...
        *) usage; exit 1;;
    esac
}
set_globals() {
    POSTGRES_STATUS=...
}

check
set_globals

Вы также можете поместить основную часть кода в выделенную функцию (main(), обычно )и вызывать ее с самого конца, чтобы на основном уровне не было кода, кроме определений функций.

1
13.10.2021, 14:04
0 ответов

Теги

Похожие вопросы