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