bash 스크립트 반복 시 파일 설명자 문제

bash 스크립트 반복 시 파일 설명자 문제

함수에서 이 작업을 수행하는 스크립트를 상속받았습니다.

# 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"을 사용합니다.)

관련 정보