不等于在外壳程序脚本中无法按预期工作

时间:2019-07-02 04:50:27

标签: bash shell jenkins

我试图编写一个shell脚本来杀死某个进程(如果jenkins中已经存在该进程)并运行jar。

我不确定哪里出了问题。我通常要检查processID是否不为null,然后终止该进程,否则仅打印processID不存在。

我浏览了以下一些链接,其中他们建议使用“ -z”检查null。因为我想检查不为null,所以我用了[! -z $ my_var],但这似乎不起作用。

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

在jenkins中,执行shell代码:

            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

我希望执行“ If”部分中的数据,但总是执行其他操作。

当我单击“立即构建”时,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 个答案:

答案 0 :(得分:4)

以防万一,请尝试添加空格:

 if [ ! -z ${my_var} ]

您可以看到examples herehere