Junio C Hamano <gitster@xxxxxxxxx> writes: > From: Ben Walton <bdwalton@xxxxxxxxx> > > The awk statements previously used in this test weren't compatible > with the native versions of awk on Solaris: > > echo "dir" | /bin/awk -v c=0 '$1 {++c} END {print c}' > awk: syntax error near line 1 > awk: bailing out near line 1 > > echo "dir" | /usr/xpg4/bin/awk -v c=0 '$1 {++c} END {print c}' > 0 > > And with GNU awk for comparison: > > echo "dir" | /opt/csw/gnu/awk -v c=0 '$1 {++c} END {print c}' > 1 > > Work it around by using $1 != "" to state more explicitly that we > are skipping empty lines. By the way, I was hoping (eh, what kind of hope is that???) that $1 alone is not a kosher POSIX way but a GNUism, but that does not seem to be the case. POSIX has this [*1*] When an expression is used in a Boolean context, if it has a numeric value, a value of zero shall be treated as false and any other value shall be treated as true. Otherwise, a string value of the null string shall be treated as false and any other value shall be treated as true. A Boolean context shall be one of the following: and among the "Boolean context" listed is: * An expression used as a pattern (as in Overall Program Structure) So the example with /usr/xpg4/bin/awk does not seem to be a behaviour from a conformant implementationd, and it seems to be correct to label this as "work it around by ..." (not "avoid using GNUism"). We learn new things every day (not that I really wanted to learn glitches in various implementations of awk) ;-). Thanks. [Reference] *1* http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html