Bexe에서 'exec {fd} </ dev / watchdog'의 기능


28

그것은 문자 그대로이며 {fd}자리 표시자가 아닙니다. 이 작업을 수행하는 스크립트가 있는데 소스가 없거나 다른 곳에서는 {fd}를 참조하지 않습니다. 이것은 유효한 배쉬입니까?

exec {fd}</dev/watchdog

답변:


34

파일 디스크립터를 선택하지 않고 사용할 수 있기를 바랍니다.

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

이 표기법은 쉘에 현재 사용 중이 아닌 파일 디스크립터를 선택하고 해당 디스크립터에서 읽을 파일을 열고 지정된 변수 ( fd)에 숫자를 지정하도록 요청합니다 .

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

(1) 어딘가에서 읽은 것을 기억하고 (2) 방금 시도해 보았으므로 작동합니다. 그러나 어디서나 문서화 된 것을 찾을 수 없었습니다. (물론, 답변을 게시하기 전에 검색 할 시간이 10 분도 채 걸리지 않았습니다.) 어디에 문서화되어 있는지 참조 할 수 있습니까?
Scott

2
섹션의 두 번째 단락 맨 페이지를 참조하십시오 REDIRECTIONS. 그들은 명백한 예를 제시하지 않기 때문에 실제로 당신에게 뛰어 들지 않습니다.
chepner

네 말이 맞아, 나는 남자 배쉬에서 그것을 놓쳤다. 그러나 그것은 당신이 말한 곳에있다. 어떤 단어가 아니라 FD 중괄호에서 작동 할 것이라고 언급되어야한다 그것은 FD> = 10 할당 한
그레그 레 벤탈

3
@Scott은 bash에서만뿐만 아니라 bash 4.1 이상에서만 가능합니다 (따라서 MacOS에서 여전히 사용되는 3.2 릴리스에서는 사용할 수 없음).
Charles Duffy

2
@CharlesDuffy /dev/watchdog는 Mac OS X에도 존재하지 않습니다. 리눅스 전용 장치입니다.
duskwuff

11

형태 :

{var}<filename

filename파일 디스크립터 번호를 읽고 저장하기 위해 쉘을 열린 파일로 만들었습니다 var. {var}및 재 지정 연산자 사이에 공간이 허용되지 않으며 파일 디스크립터 수가 크거나 같습니다 10.

이 기능에서 원래이었다 ksh(2006 년 버전 ksh93r에서) bash많은 나중에 그것을 복사 bash-4.1-alpha2010 년부터 zsh도 변경 이전의 제작 bash에서 zsh 4.3.42,007인치


2

이것은 Bash 매뉴얼 섹션의 Redirections 에 설명되어 있습니다.

파일 디스크립터 번호가 앞에 올 수있는 각각의 리디렉션은 { varname } 형식의 단어가 앞에 올 수 있습니다 . 이 경우를 제외하고 각각 리디렉션 연산자 >&-<&-, 쉘 (10)보다 파일 디스크립터를 더 할당되며 {에게 할당 변수 varName }. 경우 >&-또는 <&-{앞에는 변수 varName }의 값 varname에이 근처에 파일 기술자를 정의합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.