私がしたいことは一度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
。