파이프라인 내에서 함수 호출

파이프라인 내에서 함수 호출

매우 긴 파이프를 여러 번 사용하는 스크립트가 있습니다. 각 파이프의 중앙에는 동일한 명령 체계가 있습니다. 사용 시 시작과 끝만 지연됩니다.

Different-command-1 |
 command A |
 command B |
 command C |
 diff-cmd-2

파이프라인 내에서 이 명령을 함수로 호출할 수 있는 방법이 있나요? 좋다:

same-commands() {
    command A |
    command B |
    command C 
}

Different-command-1 |
 same-commands |
 diff-cmd-2

Different-command-3 |
 same-commands |
 diff-cmd-4

내 경우에는 스크립트에서 많은 줄을 절약할 수 있지만 이것이 어떻게 작동하는지 잘 모르겠습니다.

답변1

함수 내의 명령은 함수 자체와 동일한 stdin 및 stdout을 사용하여 실행되므로 다른 명령과 마찬가지로 함수에 파이프를 넣은 다음 함수를 다른 파이프에 붙여넣을 수 있습니다.

func() { 
    tr a x | 
    tr b x
}
echo abc | func | tr c x

이 인쇄됩니다 xxx.

관련 정보