Jenkins如何捕获脚本中的错误

Jenkins如何捕获脚本中的错误

我想做的是一旦执行 source .... 命令,如果出现错误,我想将其放入临时文件中。我尝试了几种方法但没有运气。

    def responseValue = sh(script: """#!/bin/bash
    set +x
    source /etc/runScript.sh> /dev/null 2>&1 >temp.txt
    echo \${${someVar}}
    """, returnStdout: true)
     def foundValue =  readFile(file: "temp.txt").trim()
     echo "value is ${foundValue}"
     //also tried source /etc/runScript.sh  2>&1> /dev/null >temp.txt

答案1

重定向的顺序很重要。

source /etc/runScript.sh> /dev/null 2>&1 >temp.txt

>/dev/null将标准输出重定向到位桶。

2>&1将标准错误重定向到与标准输出相同的位置,也重定向到位桶。

>temp.txt将标准输出重定向到文件temp.txt,将标准错误定向到位桶。

我认为实现目标的安全方法是将每个流保存到不同的文件中。

source /etc/runScript.sh >/dev/null 2>temp.txt

它将发送标准输出/dev/null并将标准错误保存在temp.txt.

相关内容