파이프 기호를 포함하여 전체 명령줄을 에코할 수 있나요?

파이프 기호를 포함하여 전체 명령줄을 에코할 수 있나요?

내 표준 관행은 쉘 스크립트에서 다음 관용구를 사용하는 것입니다.

doCmd() {
    if $verbose; then echo "$@" >&2; fi
    if $really; then "$@"; fi
}

...

echo Begin whatever this script is doing
doCmd rm -rf test_results_dir
doCmd cd test_results_dir
doCmd run_lengthy_test

보시다시피, 이 관용구를 사용하면 모든 스크립트에 "-v" 및 "-n" 옵션을 추가하고 명령을 실행하기 전에 stdout에 명령을 거의 원활하게 에코하거나 명령의 실제 구현을 억제할 수 있습니다. 나는 이것이 꽤 일반적인 관용구라고 생각합니다.

그러나 이것이 내가 막히는 곳입니다.

doCmd tail -n +2 test.log | grep total > summary.log

doCmd tail -n +2 test.log분명히 grep을 통해 출력을 실행 하고 파이프합니다. 하지만 제가 정말로 원하는 것은 "|"의 전체 줄을 에코하여 모두 표준 출력으로 출력한 다음 작성된 대로 실행하는 것입니다.

이것은 매우 쉬운 일입니까, 아니면 쉘에 너무 많은 것을 요구하고 있습니까?

관련 정보