【问题标题】:array+=value not work in ksh?数组+=值在 ksh 中不起作用?
【发布时间】:2013-03-22 06:04:38
【问题描述】:

我在某处读到 ksh 的数组支持 += 追加新元素,但我试过了,它不起作用:

[ksh] # arr=(a b c d)
[ksh] # arr+=e
[ksh] # echo ${arr[*]}
ae b c d
[ksh] #

为什么arr[0] 变成ae

【问题讨论】:

    标签: ksh


    【解决方案1】:

    要向数组中添加一个元素,应该是这样的:

    arr+=(e)
    

    通过 arr+=e ,它将添加到数组的第一个元素。这是因为只有名称 arr 指向数组本身的第一个元素:

    $ arr=(a b c d)
    $ echo ${arr[0]}
    a
    $ echo $arr
    a
    

    【讨论】:

      【解决方案2】:

      它是arr+=(e)。任何未指定索引的简单赋值总是引用第零个元素。

      请注意,这是一个微不足道的案例,事情可能会变得更加复杂。 += 对简单赋值和复合赋值的行为取决于上下文,并且在 bash、ksh93 和 zsh 之间也不同,因此很容易混淆。

      http://wiki.bash-hackers.org/syntax/arrays#storing_values

      【讨论】:

      • 我在网上找到了很多关于 bash 的文档,但关于 ksh 的文档却很少。 :(
      • @herik 是的,数量不多。我正在记录一些部分(在上面的 wiki 链接中),但确实很难获得信息,即使在邮件列表中也是如此。
      猜你喜欢
      • 2019-01-27
      • 2018-08-23
      • 2011-03-01
      • 2012-04-22
      • 1970-01-01
      • 2013-05-25
      • 2011-10-14
      • 2011-09-15
      • 2017-04-29
      相关资源
      最近更新 更多