获取除第一个之外的bash数组的所有元素

gro*_*k12 22 arrays bash

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

j=0
for i in "${a[@]}"
do
    b[j]=${a[++j]}
done
Run Code Online (Sandbox Code Playgroud)

然后使用"$ {b [@]}".有没有更好的办法?

Ign*_*ams 43

$ a=(1 2 3)
$ echo "${a[@]:1}"
2 3
Run Code Online (Sandbox Code Playgroud)

  • 它们位于**数组**和**参数扩展**部分.它们可以一起使用没有明确提及,但它确实有效. (3认同)
  • 谢谢,我发现它在参数扩展的$ {parameter:offset}下面说...如果参数是'@',结果是从offset开始的长度位置参数.如果parameter是由'@'或'*'下标的索引数组名,则结果是以$ {parameter [offset]}开头的数组的长度成员. (3认同)

Tom*_*ale 9

如果是标准数组,则使用:

"${a[@]:1}"
Run Code Online (Sandbox Code Playgroud)

如果您正在使用参数:

"${@:2}"
Run Code Online (Sandbox Code Playgroud)

请注意不同的语法,即$@1 索引(因为 $0 是脚本的名称)。