여러 파일의 내용을 스크립트의 stdin에 제공하는 속기 지금까지 생각해 낸 최선은 다음과

화면에서 일부 결과를 script읽고 stdin뱉어내는 이라는 스크립트가 있다고 가정 해 봅시다 .

한 파일의 내용을 제공하려면 다음을 입력했을 것입니다.

$ ./script < file1.txt

그러나 여러 파일의 내용을 동일한 방식으로 스크립트에 공급하려면 어떻게해야합니까? 내가 지금까지 생각해 낸 최선은 다음과 같습니다.

cat file1.txt file2.txt > combined.txt && ./script < combined.txt

두 명령을 사용하고 임시 파일을 만듭니다. 동일한 작업을 수행 할 수 있지만 결합 된 파일을 만드는 것을 우회하는 방법이 있습니까?



답변

당신은 cat파이프를 사용할 수 있습니다 :

cat file1 file2 file3 ... fileN | ./script

파이프를 사용하고 임시 파일을 사용하지 않는 예 :

join file1.txt file2.txt | ./script


답변

파이프를 사용하지 않으려면 프로세스 대체와 함께 입력 리디렉션을 사용할 수 있습니다.

./script <(cat file1 file2)


답변

@Jonah Braun의 답변을 추가하려면 스크립트에 프로세스 출력을 추가 해야하는 경우 파일이 디스크에 없지만 유사한 도구 를 URL사용하여 액세스 할 수 있습니다 curl.

이와 같은 것을 사용하여 stdout여러 프로세스 를 가져 와서 스크립트에서 사용할 수 있습니다.stdin

다음의 입력 내용을 처리하는 스크립트가됩니다 multi-input.sh.

#!/usr/bin/env bash
while read line; do
    echo $line
done

이제 테스트하십시오.

$ ./multi-input.sh < <(cat <(echo process 1) <(echo process 2) <(echo process 3))

산출:

process 1
process 2
process 3

<()회전은 가상으로 처리 file하여 fd당신이 그렇게한다면 <그것을 읽을 필요가있다. cat그 자체로 기능을 수행하기 때문에 가상 또는 실제 파일을 연결하기 때문에 필요하지 않습니다.


답변