Hi Torsten, On Sun, 10 Dec 2017, tboegi@xxxxxx wrote: > From: Torsten Bögershausen <tboegi@xxxxxx> > > wc -l is used to count the number if lines in test scripts. > $ wc -l Makefile > gives a line like this: > 105 Makefile > while Mac OS has 4 leading spaces: > 105 Makefile > > And this means that shell expressions like > test "$(wc -l <expect)" = "4" don't work under Mac OS, > > A portable way to use `wc -l` is to omit the '"': > test $(wc -l <expect) = "4" > > Add a check in check-non-portable-shell.pl to find '"' between > `wc -l` and '=' > > Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx> > --- > t/check-non-portable-shell.pl | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/t/check-non-portable-shell.pl b/t/check-non-portable-shell.pl > index 03dc9d2852..9ebf65c26f 100755 > --- a/t/check-non-portable-shell.pl > +++ b/t/check-non-portable-shell.pl > @@ -21,6 +21,7 @@ while (<>) { > /^\s*declare\s+/ and err 'arrays/declare not portable'; > /^\s*[^#]\s*which\s/ and err 'which is not portable (please use type)'; > /\btest\s+[^=]*==/ and err '"test a == b" is not portable (please use =)'; > + /\bwc -l.*"\s*=/ and err '`"$(wc -l)"` is not portable, please use `$(wc -l)`'; > /\bexport\s+[A-Za-z0-9_]*=/ and err '"export FOO=bar" is not portable (please use FOO=bar && export FOO)'; > # this resets our $. for each file > close ARGV if eof; As noted elsewhere, this should suggest `test_line_count` instead. After all, that function is not only guaranteed to stay portable (even if we should ever start supporting systems *without* `wc`), but it also has a semantically-meaningful name worthy of the current century. Ciao, Dscho