Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > Also, in the longer term, as you suggested, `xargs` is likely a more > fruitful solution. Hmph, the list of our test scripts exceed command line limit? That sounds a bit nasty, as we somehow need to prepare a pipe and feed them into it, in order to drive xargs downstream of the pipe. Ideally if there were a GNUMake function that slices a list into sublists of "reasonable" lengths, we could use it to directly drive N invocations of check-non-portable-shell script instead of xargs, but I didn't find one. Here is I came up with, using foreach that is "slice the list into many sublists of 1 element", but it made me feel dirty. t/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git c/t/Makefile w/t/Makefile index 3e00cdd801..f9ac6bb4eb 100644 --- c/t/Makefile +++ w/t/Makefile @@ -122,7 +122,8 @@ test-lint-executable: echo >&2 "non-executable tests:" $$bad; exit 1; } test-lint-shell-syntax: - @'$(PERL_PATH_SQ)' check-non-portable-shell.pl $(T) $(THELPERS) $(TPERF) + @{ $(foreach t,$(T) $(THELPERS) $(TPERF),echo "$t";) } | \ + xargs '$(PERL_PATH_SQ)' check-non-portable-shell.pl test-lint-filenames: @# We do *not* pass a glob to ls-files but use grep instead, to catch