2011-01-07 5 views
3

쉘을 인쇄하려면 어떻게해야합니까?이중 방향 지정 테스트

echo foo | while read line; do echo $line; done < <(echo bar) 

나는 오류 메시지가 초래 둘 echo foo | bar 또는 foo < <(bar)로 평가하는 기대. 배시에

는 파이프 단순히 폐기 같다 4.1.5 : 대시

bar 

:

sh: Syntax error: redirection unexpected 
+0

왜 중요한가요? 나쁜 디자인이므로 표준 입력을 두 번 이상 리디렉션해서는 안됩니다. – Benoit

+0

더 많은 정신 운동이었습니다. 나는 그것이 유효한 구문임을 깨달았으며, 그걸로 "합리적인"것이어야합니다. – l0b0

답변

3

대쉬 프로세스 교체 (<())을 지원하지 않는다.

비교중인 각 셸에서 지원하는 구문을 사용하면 나타나는 동작이 일관됩니다. 이것을 시도하십시오 :

echo hello | cat < inputfile 

"hello"가 아닌 "inputfile"의 내용을보아야합니다. 내가 시험해 보았던 몇 개의 껍질 중에서, 단지 Z 껍질 만이 양쪽을 보였다.

명령어 1의 표준 출력은 Command2를의 표준 입력에 연결되어야한다 :

이 POSIX는 관련 파이프 라인 및 재 지정을 말하는 것입니다. 명령의 표준 입력, 표준 출력 또는 두 명령 모두는 명령의 일부인 리다이렉션 연산자에 의해 지정된 리디렉션보다 먼저 파이프 라인에 의해 할당되는 것으로 간주됩니다 (리디렉션 참조).

나는이 위의 예제의 경우, 파이프 라인이 다음 리디렉션을 무시 cat에 표준 입력을 할당하는 것을 의미하는 것으로 해석한다.

+0

+1 표준 인용 – SiegeX