쉘을 인쇄하려면 어떻게해야합니까?이중 방향 지정 테스트
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
쉘을 인쇄하려면 어떻게해야합니까?이중 방향 지정 테스트
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
대쉬 프로세스 교체 (<()
)을 지원하지 않는다.
비교중인 각 셸에서 지원하는 구문을 사용하면 나타나는 동작이 일관됩니다. 이것을 시도하십시오 :
echo hello | cat < inputfile
"hello"가 아닌 "inputfile"의 내용을보아야합니다. 내가 시험해 보았던 몇 개의 껍질 중에서, 단지 Z 껍질 만이 양쪽을 보였다.
나는이 위의 예제의 경우, 파이프 라인이 다음 리디렉션을 무시명령어 1의 표준 출력은 Command2를의 표준 입력에 연결되어야한다 :
이 POSIX는 관련 파이프 라인 및 재 지정을 말하는 것입니다. 명령의 표준 입력, 표준 출력 또는 두 명령 모두는 명령의 일부인 리다이렉션 연산자에 의해 지정된 리디렉션보다 먼저 파이프 라인에 의해 할당되는 것으로 간주됩니다 (리디렉션 참조).
cat
에 표준 입력을 할당하는 것을 의미하는 것으로 해석한다.
+1 표준 인용 – SiegeX
왜 중요한가요? 나쁜 디자인이므로 표준 입력을 두 번 이상 리디렉션해서는 안됩니다. – Benoit
더 많은 정신 운동이었습니다. 나는 그것이 유효한 구문임을 깨달았으며, 그걸로 "합리적인"것이어야합니다. – l0b0