Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我可以创建一个数组,然后从这个数组中删除
$ foo=(a b c) $ unset foo[0] $ echo ${foo[*]} b c
但是,如果nullglob已设置,则我无法从数组中删除
nullglob
$ shopt -s nullglob $ foo=(a b c) $ unset foo[0] $ echo ${foo[*]} a b c
unset 'foo[0]'
Bash 认为它var[1]是一个 glob,没有找到与其匹配的文件,并且根据nullglob删除它的指令,导致你的脚本运行unset 而不是unset var[1]- 并且没有任何东西被取消。解决此问题的正确方法是引用变量名(并始终明确指定)-v:. unset -v 'var[1]'
var[1]
unset
unset var[1]
-v
unset -v 'var[1]'
§ nullglob