bash /dev/fd/3 3<< 'EOF'의 3 3은 무엇을 의미합니까?

bash /dev/fd/3 3<< 'EOF'의 3 3은 무엇을 의미합니까?

Unix 코드 일부를 보았지만 이를 완전히 해석할 만큼 충분한 배경 ​​지식이 없었습니다.

bash /dev/fd/3 3<< 'EOF'

위의 내용은 무엇을 의미합니까 3 3? 나는 구분 기호가 무엇인지, Bash, 장치 및 fd가 무엇인지 알고 있지만 무엇인지는 모릅니다.3 공간 3...Google에서 인용된 문구를 검색했을 때 기본적으로 아무것도 찾지 못했습니다.

코드가 제공됩니다여기적절한 권한이 있는 파일을 생성하지 않고도 스크립트(특히 이미 내부 heredoc 및 주석이 포함된 스크립트)를 실행할 수 있는 특별한 heredoc이 됩니다.

Unix 전문가가 3 3이것이 어떤 부분인지 설명할 수 있습니까? 감사합니다,

답변1

bash이 문구는 이 문서를 0이 아닌 파일 설명자 에 전달하는 방법입니다 . 3입니다.

구문의 첫 번째 부분은 파일 설명자 3을 input 으로 실행하고 base /dev/fd/3두 번째 부분은 쉘에게 해당 파일 설명자에 here-doc를 쓰라고 지시합니다.bash3<< EOF

공백이 3<<없는 단일 토큰이어야 합니다.

이렇게 하면 here-doc 스크립트에서 stdin을 읽으면 here-doc 자체가 아닌 실제 입력(파일 설명자 0에서)을 읽습니다. 내가 이해하는 바에 따르면, 이와 같은 작업을 수행하지 않으면 here-doc가 내부적으로 bash의 표준 입력이 되어 "실제 입력"을 읽을 수 없게 됩니다.

관련 정보