shell 脚本的 grep 命令失败时 Jenkins 管道退出
Jenkins Pipeline exiting when grep command of shell script fails
我有一个为脚本化管道编写的 Jenkinsfile,其中有以下代码:
sh """ cd $WORRKSPACE
source myscript.sh
cd ${EXPORTED_VAR1}
.
.
.
"""
所以我 source myscript 里面有一个 source 命令,比如说 source their_script.sh
。问题就像 their_script.sh 包含一行 echo [=13=] | egrep -iqe string
。每当 egrep 找不到匹配项时,我的 Jenkins 工作就会退出。但这突然发生了,它一直工作到昨天!!!
我知道 grep returns status 1 当它找不到匹配项时,这就是它退出的原因。但我希望 myscript 即使 grep 失败也能继续。我也明白使用 set +e
和 set -e
将帮助我在 grep 失败时不退出。但是我不允许修改their_script.sh。如果我在调用 myscript 本身时添加 set +/-e
,会不会像 none 这样的错误会退出脚本?它不会忽略退出时的所有错误吗?
有什么解决方案可以让我在 grep 失败的情况下继续我的工作吗?
尝试
sh """#!/bin/bash -xe
cd ${WORKSPACE}
## etc.
...
"""
我有一个为脚本化管道编写的 Jenkinsfile,其中有以下代码:
sh """ cd $WORRKSPACE
source myscript.sh
cd ${EXPORTED_VAR1}
.
.
.
"""
所以我 source myscript 里面有一个 source 命令,比如说 source their_script.sh
。问题就像 their_script.sh 包含一行 echo [=13=] | egrep -iqe string
。每当 egrep 找不到匹配项时,我的 Jenkins 工作就会退出。但这突然发生了,它一直工作到昨天!!!
我知道 grep returns status 1 当它找不到匹配项时,这就是它退出的原因。但我希望 myscript 即使 grep 失败也能继续。我也明白使用 set +e
和 set -e
将帮助我在 grep 失败时不退出。但是我不允许修改their_script.sh。如果我在调用 myscript 本身时添加 set +/-e
,会不会像 none 这样的错误会退出脚本?它不会忽略退出时的所有错误吗?
有什么解决方案可以让我在 grep 失败的情况下继续我的工作吗?
尝试
sh """#!/bin/bash -xe
cd ${WORKSPACE}
## etc.
...
"""