이는 {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
.
이 기능은 원래 ksh
2006년 ksh93r 버전 에서 제공되었으며 2010년 bash
부터 bash-4.1-alpha
복사되었습니다 . 2007년보다 zsh
일찍 변경된 사항도 있습니다 .bash
zsh 4.3.4
답변3
이에 대해서는 Bash 매뉴얼 섹션에 설명되어 있습니다.리디렉션.
각 리디렉션 앞에는 파일 설명자 번호가 올 수 있지만 { 형식의 단어가 앞에 올 수도 있습니다.변수 이름}. 이 경우
>&-
및를 제외한 모든 리디렉션 연산자 에 대해<&-
쉘은 10보다 큰 파일 설명자를 할당하고 이를 {변수 이름}. { 인 경우>&-
또는<&-
앞에 오는 경우변수 이름}, 의 가치변수 이름닫힐 파일 설명자를 정의합니다.