내가 하고 싶은 일은 일단 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
.