왜`echo bash | bash`가 즉시 종료됩니까?

Oct 05 2020

다음 작업은 모두 효과가없는 작업입니다.

echo bash | bash
echo dash | dash
echo "bash -c bash" | bash
echo "dash -c dash" | dash

왜? 첫 번째 줄의 경우, 예를 들어, 나는 떠들썩한 파티 인스턴스를 생성한다고 가정 것이고, 다음 은 입력을 기다리는 또 다른 bash는 인스턴스를 생성합니다. 그러나 입력을 기다리지 않습니다. 종료됩니다. 부모 bash도 종료됩니다. 따라서 두 bash 인스턴스가 모두 종료되고이 명령을 시작한 셸 인스턴스로 돌아갑니다. 내가 어디에서 잘못하고 있습니까?

답변

7 user414777 Oct 05 2020 at 12:45

두 번째 bash 인스턴스 는 stdin ( bash문자열을 읽은 동일한 파이프)에서 입력을 기다리지 만 echo프로세스가 종료되고 파이프의 쓰기 끝이 닫히 자마자 EOF를 얻 습니다.

두 번째 bash에도 입력을 시도 할 수 있습니다.

(echo bash; echo echo hjello) | bash
hjello