여러 명령의 출력을 다른 명령의 입력으로 리디렉션하는 올바른 방법은 무엇입니까?
예를 들어
$ command < (command2 | grep pattern)
답변1
(의심스러운 경우에는 bash를 나타냅니다.)
파이프를 생성(또는 기존 확장)하여 한 명령 또는 파이프의 출력을 다른 명령에 대한 입력으로 사용할 수 있습니다.
command1 | command2
command1 | command2 | command3
여러 명령(파이프 포함)을 하위 쉘 또는 목록(그룹 명령)과 결합할 수 있습니다. 이 조합은 파이프라인의 첫 번째 부분이 됩니다.
(command1; command2 | command3; command4) | command5
{command1; command2 | command3; command4;} | command5 # note the ; before }
또 다른 가능성은 "여기에 문자열"(또는 "여기에 문서")입니다.
command2 <<< $(command1)
command2 <<EOT
First input line
$(command1)
Last input line
EOT
기타 사례
명령 대체출력이 명령줄의 일부여야 할 때 사용합니다. 즉, 한 명령이 다른 명령의 출력을 자체 인수로 처리해야 하는 경우:
echo $(date)
echo는 echo의 출력을 date
마치 명령줄에 입력한 것처럼 인수로 처리합니다.
프로세스 대체다른 프로세스의 출력이 명령줄에 인수로 제공된 (검색할 수 없는) 파일의 내용으로 표시됩니다.
grep bar <(echo $'foo\nbar\nbaz')
그렙 같은데
echo $'foo\nbar\nbaz' > /path/to/file
grep bar /path/to/file
답변2
다음을 사용하여 명령을 실행해야 합니다.명령 대체통사론.
$ command < $(command2 | grep pattern)