【问题标题】:nullglob and arraysnullglob 和数组
【发布时间】:2013-03-31 14:52:00
【问题描述】:

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

$ 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

【问题讨论】:

    标签: arrays bash glob shopt


    【解决方案1】:
    unset 'foo[0]'
    

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

    § nullglob

    【讨论】:

    • 我花了两天时间,终于发现nullglob是罪魁祸首!感谢您以正确方式使用unset
    • 以变量为下标,使用双引号,像这样:`unset -v "var[$subscript]".
    猜你喜欢
    • 2017-02-16
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2012-08-18
    • 2012-02-14
    • 2016-12-05
    • 1970-01-01
    相关资源
    最近更新 更多