Bash surprised me with the behavior mentioned here:
https://stackoverflow.com/questions/15897473
This can be pretty bad in that it's very unexpected (see the comments).
Also, the surprise can be triggered without nullglob as well:
$ foo=(a b c)
$ touch foo0
$ unset foo[0]
$ echo ${foo[*]}
a b c
The thing is that AFAICT, there is no mention of this pitfall in the man
page... It would be nice to mention using quotes in at least the
`unset` description, and possibly also about `nullglob` too since it
makes it easier to run into this problem.
I grepped through the bash sources, and even there I found a few unsafe
uses:
grep -r 'unset[^a-z"'\'']*\[' examples tests
so this is clearly something that is not well-known enough.
--
((x=>x(x))(x=>x(x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!