Не равно не работает, как ожидается, в сценариях оболочки - PullRequest
1 голос
/ 02 июля 2019

Пытаюсь написать сценарий оболочки, чтобы убить процесс, если он уже существует в jenkins, и запустить jar.

Не уверен, в чем проблема.Обычно я хочу проверить, не является ли идентификатор процесса пустым, а затем завершить процесс, иначе просто напечатайте идентификатор процесса.

Я просмотрел некоторые из приведенных ниже ссылок, в которых они предлагали использовать «-z» для проверки.ноль.так как я хотел проверить не нуль, поэтому я использовал [!-z $ my_var], но это не похоже на работу.

https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/

В jenkins выполните код оболочки:

            BUILD_ID=do_not_kill_me
            my_var=$(pgrep -f customer);
            if [[! -z $my_var]]
            then
                kill -9 "$my_var";
                echo "PID exists and killing it";   
            else
                echo "PID is null/PID doesn't exist";
            fi
            cp -rf customer*.jar /data/dev/customer/customer.jar
            java -jar /data/dev/customer/customer.jar &
            exit

Я хочу, чтобы данные в«Если» часть должна быть выполнена, но всегда выполняется другая.

пример вывода от jenkins, когда я нажимаю на сборку сейчас,

        + BUILD_ID=do_not_kill_me
        + pgrep -f customer
        + my_var=15531
        + [[! -z 15531]]
        /tmp/jenkins390846207133389320.sh: 4: /tmp/jenkins390846207133389320.sh: [[!: not found
        + echo PID is null/PID doesn't exist
        PID is null/PID doesn't exist
        + cp -rf customer-management-0.0.1-SNAPSHOT.jar /data/dev/customer/customer.jar
        + exit

, хотя мой PID существует, он возвращает сообщение о печати, в котором указано, чтосуществует.Дайте мне знать, где я иду не так

1 Ответ

4 голосов
/ 02 июля 2019

На всякий случай попробуйте добавить пробелы:

 if [ ! -z ${my_var} ]

Здесь вы можете увидеть примеры или здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...