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

40

我有一个索引的bash数组,我想使用类似"${a[@]}"的表达式,但我不想包括a[0]。 我能想到的最好办法是:

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

然后使用"${b[@]}"。有更好的方法吗?

2个回答

66
$ a=(1 2 3)
$ echo "${a[@]:1}"
2 3

他需要这个来访问数组b。b=(${a[@]:1}) - Jasonw
是的,那个可行!你知道在Bash手册中描述的位置吗? - grok12
3
它们在“数组”和“参数展开”部分。虽然没有明确提到它们可以一起使用,但是它确实有效。 - Ignacio Vazquez-Abrams
3
谢谢,我在${parameter:offset}的参数扩展下找到了它,其中说...如果参数是 '@',结果将是从偏移量开始的长度位置参数。如果参数是由 '@' 或 '*' 下标的索引数组名称,结果将是以 ${parameter[offset]} 开头的数组成员长度。 - grok12

7
如果这是一个标准数组,请使用:
"${a[@]:1}"

如果您正在使用参数:

"${@:2}"

请注意不同的语法,并且$@是从1开始计数的(因为$0是脚本的名称)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接