Use tee(1) to replace two calls of cat(1) for writing files with different line endings. That's shorter and spawns less processes. It has a small, but measurable performance impact on my Windows machine. Here are the numbers before: $ (cd t && hyperfine.exe -w3 "sh.exe t3920-crlf-messages.sh") Benchmark 1: sh.exe t3920-crlf-messages.sh Time (mean ± σ): 5.705 s ± 0.047 s [User: 0.000 s, System: 0.001 s] Range (min … max): 5.632 s … 5.772 s 10 runs ... and with this patch: $ (cd t && hyperfine.exe -w3 "sh.exe t3920-crlf-messages.sh") Benchmark 1: sh.exe t3920-crlf-messages.sh Time (mean ± σ): 5.616 s ± 0.021 s [User: 0.001 s, System: 0.002 s] Range (min … max): 5.577 s … 5.644 s 10 runs Signed-off-by: René Scharfe <l.s.r@xxxxxx> --- t/t3920-crlf-messages.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/t/t3920-crlf-messages.sh b/t/t3920-crlf-messages.sh index 4fc9fa9cad..1f64ce565f 100755 --- a/t/t3920-crlf-messages.sh +++ b/t/t3920-crlf-messages.sh @@ -9,8 +9,7 @@ LIB_CRLF_BRANCHES="" create_crlf_ref () { branch="$1" && - cat >.crlf-orig-$branch.txt && - cat .crlf-orig-$branch.txt | append_cr >.crlf-message-$branch.txt && + tee .crlf-orig-$branch.txt | append_cr >.crlf-message-$branch.txt && grep 'Subject' .crlf-orig-$branch.txt | tr '\n' ' ' | sed 's/[ ]*$//' | tr -d '\n' >.crlf-subject-$branch.txt && grep 'Body' .crlf-orig-$branch.txt | append_cr >.crlf-body-$branch.txt && LIB_CRLF_BRANCHES="${LIB_CRLF_BRANCHES} ${branch}" && -- 2.38.1.windows.1