exec 호출 간 파일 리디렉션 유지

exec 호출 간 파일 리디렉션 유지

exec 호출 간에 파일 리디렉션 명령을 보존하는 방법이 있습니까?

예를 들어 두 개의 bash 스크립트가 있습니다. 스크립트 1에서는 stdout과 stderr을 파일로 리디렉션합니다. 그런 다음 script2를 실행하십시오.

스크립트 1

exec &> >(tee "$logs_file")
echo "something"
exec "./script2.sh"

스크립트 2

echo "something else

로그 파일 내에는 스크립트 1의 echo 명령만 표시되고 스크립트 2는 표시되지 않습니다.

something

exec 호출 간에 파일 리디렉션 명령을 보존하는 방법이 있습니까?

답변1

예제에서 몇 가지 사소한 버그를 수정했습니다. 설명하신 문제가 보이지 않습니다.

# Set up the scenario
mkdir /tmp/555270
cd /tmp/555270

cat <<'EOF' >script1
#!/bin/bash
logs_file=logs_file
exec &> >(tee "$logs_file")
echo "something"
exec "./script2"
EOF

cat <<'EOF' >script2
#!/bin/bash
echo "something else"
EOF

chmod a+x script?
rm -f logs_file

# Run the script
./script1
something
something else

# Examine the log file
cat logs_file
something
something else

관련 정보