Пытаюсь написать сценарий оболочки, чтобы убить процесс, если он уже существует в 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 существует, он возвращает сообщение о печати, в котором указано, чтосуществует.Дайте мне знать, где я иду не так