exec를 통한 리디렉션을 중지하는 방법

exec를 통한 리디렉션을 중지하는 방법

스크립트의 일부 출력을 파일로 리디렉션하고 싶습니다.

REDIRECT_FILE="foo.txt"

echo to console

# starting redirect
exec > $REDIRECT_FILE

echo to file
echo ...
echo ...

# stop redirect
exec >&-

echo end of script

"스크립트 끝"은 표준 출력에 기록되어야 합니다. 그런데 "잘못된 파일 설명자" 오류 메시지가 나타났습니다.

exec 1>&-작동하지 않습니다.

리디렉션 중지에 대한 올바른 용어는 무엇입니까?

답변1

exec 1>&-닫다표준 출력. 교체한 이후에는 원래 값으로 복원되지 않습니다 exec > $REDIRECT_FILE(이는 exec > "$REDIRECT_FILE"쉘의 추가 처리로부터 변수 값을 보호하기 위한 것입니다).

다시 덮다표준 출력원래 값을 저장해야 합니다.

exec 3>&1                  # Save stdout as FD 3
exec 1>"$REDIRECT_FILE"    # Redirect stdout to a file
exec 1>&3                  # Revert stdout to its original value

관련 정보