2016-08-05 8 views
4

<(commands ...)에 해당하는 POSIX 쉘은 출력 동작을 파일로 만듭니다. POSIX가 있습니까?bash/zsh의 <()

+4

에 가장 가까운 가능한 동일합니다 [POSIX 프로세스 대체를 지정하지 않습니다,하지만 당신은 같은 일을 달성하기 위해 명명 된 파이프를 사용 할 수 있습니다. (http://mywiki.wooledge.org/ProcessSubstitution) – bishop

+0

[msys/mingw (bash 3.x 사용)에서 프로세스 대체를 모방 할 수 있습니까?] (http://stackoverflow.com/questions/20866832/is-it-possible-to-mimic- process-substitution-on-msys-mingw-with-bash-3-x) –

+1

@PP, 나는 그 특정 잠재적 속임수를별로 좋아하지 않는다. 오해에서 접어 들기 때문에 ash 3.x *는 프로세스 대체를 지원하지 않습니다. 이는 버전 기반 버전과는 달리 msys 제한 사항입니다.) –

답변

10
mkfifo foo.fifo 

## if your "commands" is multiple commands 
# { commands ...; } >foo.fifo & 

# otherwise, if it's just one 
commands ... >foo.fifo & 

something_else foo.fifo 

something_else <(commands ...) 
+0

"견고 함"개선은'mktemp'와 같은 것을 사용하여 충돌로부터 안전 한 파이프 중 하나에 대한 디렉토리를 생성하는 것입니다 (또는'mkfifo'가 원자 적이기 때문에 파이프에 사용할 이름을 생성하는 것 등). 실제로이 모든 것은 <(...)'이 뒷 배경으로하고 있습니다.이 대답의 좀 더 견고한 변형을위한 구문 론적 설탕 일뿐입니다. – mtraceur

+1

@mtraceur는'/ dev/fd'를 사용할 수없는 플랫폼에서'<(...)'이 장면 뒤에서하고있는 것입니다. *; 그것은'pipe (2)'익명 디스크립터 쌍을 사용한다. –

+0

오른쪽. 수정 해줘서 고마워 - 그걸 잊어 버렸어. – mtraceur