함수에서 이 작업을 수행하는 스크립트를 상속받았습니다.
# IO redirection for logging.
#touch $LOGFILE
exec 6>&1 # Link file descriptor #6 with stdout.
# Saves stdout.
exec > $LOGFILE # stdout replaced with file $LOGFILE.
touch $LOGERR
exec 7>&2 # Link file descriptor #7 with stderr.
# Saves stderr.
exec 2> $LOGERR # stderr replaced with file $LOGERR.
나중에 함수에서 다음을 수행합니다.
#Clean up IO redirection
exec 1>&6 6>&- # Restore stdout and close file descriptor #6.
exec 1>&7 7>&- # Restore stdout and close file descriptor #7.
문제는 이 함수를 두 번(즉, 루프에서) 호출하면 두 번째 반복이 오류를 표시하지 않고 위의 첫 번째 코드 세트에서 중지된다는 것입니다.
우리는 왜 이런 일을 하는가?
답변1
왜 "중지"되는지 잘 모르겠습니다. 무슨 뜻인지(스크립트가 종료됩니까? 중단됩니까?) 한 가지 문제가 있습니다. 마지막 줄은 이어야 합니다 exec 2>&7 7>&-
. (또한 해당 줄에 대한 주석은 " "stdout" 대신 "stderr"을 사용합니다.)