Re: [PATCH] Use wc instead of awk to count subtrees in t0090-cache-tree
From: Jonathan Nieder <hidden>
Date: 2016-06-15 23:03:20
Ben Walton wrote:
echo "dir" | /usr/xpg4/bin/awk -v c=0 '$1 {++c} END {print c}'
0
Thanks. Weird. Does
awk -v c=0 '$1 != "" {++c} END {print c}'
work better?
[...]quoted hunk ↗ jump to hunk
--- a/t/t0090-cache-tree.sh +++ b/t/t0090-cache-tree.sh@@ -22,7 +22,7 @@ generate_expected_cache_tree_rec () { # ls-files might have foo/bar, foo/bar/baz, and foo/bar/quux # We want to count only foo because it's the only direct child subtrees=$(git ls-files|grep /|cut -d / -f 1|uniq) && - subtree_count=$(echo "$subtrees"|awk -v c=0 '$1 {++c} END {print c}') && + subtree_count=$(echo "$subtrees"|wc -w) && entries=$(git ls-files|wc -l) && printf "SHA $dir (%d entries, %d subtrees)\n" "$entries" "$subtree_count" &&
Some implementations of wc add a trailing space, causing printf: 1 : invalid number Using printf "SHA $dir (%d entries, %d subtrees)\n" "$entries" $subtree_count && (with no quotes around $subtree_count) would avoid trouble, though that's a little subtle. Hope that helps, Jonathan