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 +eset -e 将帮助我在 grep 失败时不退出。但是我不允许修改their_script.sh。如果我在调用 myscript 本身时添加 set +/-e,会不会像 none 这样的错误会退出脚本?它不会忽略退出时的所有错误吗?

有什么解决方案可以让我在 grep 失败的情况下继续我的工作吗?

尝试

sh """#!/bin/bash -xe
cd ${WORKSPACE}
## etc.
...
"""