【问题标题】:Getting all elements of a bash array except the first获取除第一个之外的 bash 数组的所有元素
【发布时间】:2011-09-11 08:37:25
【问题描述】:

我有一个索引 bash 数组,我想使用像“${a[@]}”这样的表达式,但我希望它不包含 a[0]。我能想到的最好的是:

j=0
for i in "${a[@]}"
do
    b[j]=${a[++j]}
done

然后使用“${b[@]}”。有没有更好的办法?

【问题讨论】:

    标签: arrays bash


    【解决方案1】:

    如果是标准数组,使用:

    "${a[@]:1}"
    

    如果您正在使用参数:

    "${@:2}"
    

    注意不同的语法,$@ 是 1-indexed(因为 $0 是脚本的名称)。

    【讨论】:

      【解决方案2】:
      $ a=(1 2 3)
      $ echo "${a[@]:1}"
      2 3
      

      【讨论】:

      • 认为他需要那个来访问数组 b。 b=(${a[@]:1})
      • 是的,这行得通!你会碰巧知道 bash 手册中的描述吗?
      • 它们位于 ArraysParameter Expansion 部分。没有明确提到它们可以一起使用,但确实有效。
      • 谢谢,我在 ${parameter:offset} 的参数扩展下找到了它,上面写着……如果参数是“@”,则结果是从偏移量开始的长度位置参数。如果 parameter 是下标为“@”或“*”的索引数组名称,则结果是数组的长度成员以 ${parameter[offset]} 开头。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多