... | while read a; do... 식의 반복문 내에서 cat을 쓰려면 어떻게 해야 하나요?

이런 문장에서 cat을 사용하면, 파이프라인으로 넘어오는 모든 표준입력을 한꺼번에 받아버리는 문제가 발생합니다.
표준입력 파일디스크럽터를 닫아도 마찬가지입니다.
… | while read a; do… 식의 반복문 내에서 cat을 쓰려면 어떻게 해야 하나요?

[quote="별님":6e8e9fr5]이런 문장에서 cat을 사용하면, 파이프라인으로 넘어오는 모든 표준입력을 한꺼번에 받아버리는 문제가 발생합니다.
표준입력 파일디스크럽터를 닫아도 마찬가지입니다.
… | while read a; do… 식의 반복문 내에서 cat을 쓰려면 어떻게 해야 하나요?[/quote:6e8e9fr5]

어떤 경우인지 잘 모르겠네요.
read a 명령에 따르면, a라는 변수에 읽어 들인 내용이 담겨지기에,
cat명령이 아닌 echo나 printf를 사용하면 되지 않습니까?
또한 다른 파일을 cat으로 출력하는 경우는 표준입력을 사용하지 않기 때문에 상관이 없을 거구요.

[code:2fedags1]$ echo 123 456 789 012 345 | while read -d \ i; do
> echo =$i=
> read -t 0 -n 0 && echo RStdIN #표준입력을 감지
> test -t 0 && echo TStdIN #표준입력을 감지
> done
=123=
RStdIN
=456=
RStdIN
=789=
RStdIN
=012=
RStdIN
=345=
RStdIN
.
.
.[/code:2fedags1]
read에 전달될 표준입력과 while문 내에서 발생되는 표준입력을 분리시키고 싶습니다.
test문으로 표준입력이 존재하는지 확인하면 되네요. :-)