我可以创建一个数组,然后从这个数组中删除
$ foo=(a b c)
$ unset foo[0]
$ echo ${foo[*]}
b c
但是如果设置了nullglob
,那么我无法从数组中删除
$ shopt -s nullglob
$ foo=(a b c)
$ unset foo[0]
$ echo ${foo[*]}
a b c
答案 0 :(得分:4)
unset 'foo[0]'
Bash认为
var[1]
是一个glob,没有找到与之匹配的文件,并且nullglob
的每条指令将其删除,导致您的脚本运行unset
而不是unset var[1]
- 没有任何东西得到解决。解决这个问题的正确方法 问题是引用变量名称(并始终明确指定-v
):unset -v 'var[1]'
。