'exec {fd}는 무엇을 의미하나요?

'exec {fd}는 무엇을 의미하나요?

이는 {fd}자리 표시자가 아니라 문자 그대로의 의미입니다. 나는 이 작업을 수행하고 아무 것도 참조하지 않는 스크립트를 가지고 있으며 다른 곳에서는 {fd}도 참조하지 않습니다. 이것이 유효한 bash입니까?

exec {fd}</dev/watchdog

답변1

파일 설명자를 선택하고 사용 가능해지기를 바라는 대신:

exec 4< /dev/watchdog  # Was 4 in use? Who knows?

이 표기법은 쉘에게 현재 사용되지 않는 파일 설명자를 선택하고, 해당 설명자를 읽기 위해 파일을 열고, 주어진 변수( fd)에 번호를 할당하도록 요청합니다.

$ exec {fd}< /dev/watchdog
$ echo $fd
10

답변2

시트:

{var}<filename

쉘이 파일을 읽기 위해 열고 filename파일 설명자 번호를 변수에 저장하도록 합니다 var. 과 리디렉션 연산자 사이에는 공백이 허용되지 않으며 {var}파일 설명자 번호는 와 같거나 커야 합니다 10.

이 기능은 원래 ksh2006년 ksh93r 버전 에서 제공되었으며 2010년 bash부터 bash-4.1-alpha복사되었습니다 . 2007년보다 zsh일찍 변경된 사항도 있습니다 .bashzsh 4.3.4

답변3

이에 대해서는 Bash 매뉴얼 섹션에 설명되어 있습니다.리디렉션.

각 리디렉션 앞에는 파일 설명자 번호가 올 수 있지만 { 형식의 단어가 앞에 올 수도 있습니다.변수 이름}. 이 경우 >&-및를 제외한 모든 리디렉션 연산자 에 대해 <&-쉘은 10보다 큰 파일 설명자를 할당하고 이를 {변수 이름}. { 인 경우 >&-또는 <&-앞에 오는 경우변수 이름}, 의 가치변수 이름닫힐 파일 설명자를 정의합니다.

관련 정보