Jeff King [off-list ref] writes:
It's surprisingly hard to do field-splitting without pathname globbing
in pure shell. I couldn't find a way without using "set -f". That's in
POSIX, but it feels funny tweaking a global that can effect how other
code runs. We can at least constraint it to a subshell close to the
point of use:
...
- for pattern_
+ (set -f
+ for pattern_ in $*
do
case "$arg" in
$pattern_)
- return 0
+ exit 0
esac
done
- return 1
+ exit 1)
}
Nice. "set -f" is what I wanted to find myself but couldn't, when I
wrote the message you are responding to.
-if match_pattern_list "$this_test" $GIT_SKIP_TESTS
+if match_pattern_list "$this_test" "$GIT_SKIP_TESTS"
OK. 'for pattern_ in $*' that flattens $* allows us to quote it
here, passing it as a single argument without globbing.