스크립트의 일부 출력을 파일로 리디렉션하고 싶습니다.
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