在bash

时间:2018-01-11 18:59:20

标签: bash

我有一个数组a = ( 1 2 3 4 5 6) 现在我想将数组的第1和第2个元素提取到两个不同的变量中,并将数组a的其余元素分配给另一个数组,该数组的元素只有第3个元素。 所以b和c分别是带有第一和第二变量的变量

就像:

b=$a[0];
c=$a[1]; 

arr=( 3 4 5 6 )`

1 个答案:

答案 0 :(得分:4)

$a[0]不会将[0]视为扩展的一部分 - 相反,它是一个要附加的单独字符串。如the bash-hackers' wiki page on paramater expansion中所述,在从数组中提取内容时,您需要使用花括号来包围下标。

a=( 1 2 3 4 5 6 )
b=${a[0]}
c=${a[1]}
arr=( "${a[@]:2}" )

declare -p b c arr # print definitions of variables b, c, and arr

......正确发出:

declare -- b="1"
declare -- c="2"
declare -a arr='([0]="3" [1]="4" [2]="5" [3]="6")'