일반적으로 우리는 하나의 인수 만 전달하면됩니다.
echo abc | cat
echo abc | cat some_file -
echo abc | cat - some_file
두 가지 주장을 전달할 수있는 방법이 있습니까? 같은 것
{echo abc , echo xyz} | cat
cat `echo abc` `echo xyz`
두 결과를 파일에 먼저 저장할 수 있습니다.
echo abc > file1
echo xyz > file2
cat file1 file2
그러나 실수로 파일을 덮어 쓸 수 있습니다. 이것은 비 대화식 스크립트로 들어갑니다. 기본적으로 두 개의 임의 명령 결과를 cat
파일에 쓰지 않고 전달할 수있는 방법이 필요 합니다.
업데이트 : 죄송합니다.이 예는 문제를 숨 깁니다. { echo abc ; echo xyz ; } | cat
작동 하는 것처럼 보이지만 출력은 echo
s가 아닌 s 로 인해 발생 합니다 cat
.
더 좋은 예는 { cut -f2 -d, file1; cut -f1 -d, file2; } | paste -d,
예상대로 작동하지 않는 것입니다.
와
file1:
a,b
c,d
file2:
1,2
3,4
예상되는 결과는 다음과 같습니다.
b,1
d,3
해결 :
프로세스 대체 사용 :cat <(command1) <(command2)
또는 다음을 사용하여 명명 된 파이프를 만드십시오 mkfifo
.
mkfifo temp1
mkfifo temp2
command1 > temp1 &
command2 > temp2 &
cat temp1 temp2
temp1과 temp2가 미리 존재하지 않는 한 덜 우아하고 더 장황하지만 잘 작동합니다.