방금 우연히 발견했어요
exec 1> >(logger -s -t $(basename $0)) 2>&1
현재 스크립트의 출력을 시스템 로거로 리디렉션하는 데 사용됩니다(본 적이 없지만 확인하고 싶은 경우).https://stackoverflow.com/questions/8888251/understanding-bash-exec-12-command쉘 지식을 넓혀보세요).
1>
이것이 왜 필요한지 알고 싶습니다 . exec >(logger -s -t test) 2>&1
실패 이유는 다음과 같기 때문에 이것이 필요해 보입니다.
bash: /dev/fd/63: Permission denied
bash: exec: /dev/fd/63: cannot execute: Permission denied
하지만 위에 링크된 질문에 따라 리디렉션으로 충분하므로 생략은 1>
제가 직관적으로 한 것입니다 . 그런 다음 평소대로 stderr를 stdout으로 리디렉션합니다.exec >[some redirection target]
2>&1
나는 bash 4.4.19를 사용하고 있습니다.
답변1
>
이는 필수입니다( 대신 간단히 추가로 작성할 수 있음 1
). 이것1>
>
>(...)
프로세스 교체(filename)과 같은 것으로 확장된 /dev/fd/13
다음 >
표준 출력을 해당 파일로 리디렉션합니다. 그때부터 > >(...)
.