I can create an array, then delete from this array
$ foo=(a b c)
$ unset foo[0]
$ echo ${foo[*]}
b c
However if nullglob is set then I cannot delete from the array
$ shopt -s nullglob
$ foo=(a b c)
$ unset foo[0]
$ echo ${foo[*]}
a b c
unset 'foo[0]'
Bash thinks the
var[1]is a glob, doesn't find a file that matches it, and per instruction ofnullglobremoves it, causing your script to rununsetinstead ofunset var[1]- and nothing gets unset. The correct way to fix this issue is to quote the variable name (and always specify-vexplicitly):unset -v 'var[1]'.
§ nullglob
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With