3

我可以创建一个数组,然后从这个数组中删除

$ 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
4

1 回答 1

4
unset 'foo[0]'

Bash 认为它var[1]是一个 glob,没有找到与其匹配的文件,并且根据nullglob删除它的指令,导致你的脚本运行unset 而不是unset var[1]- 并且没有任何东西被取消。解决此问题的正确方法是引用变量名(并始终明确指定)-v:. unset -v 'var[1]'

§ nullglob

于 2013-04-09T09:07:35.350 回答