我有一个数组a = ( 1 2 3 4 5 6)
现在我想将数组的第1和第2个元素提取到两个不同的变量中,并将数组a
的其余元素分配给另一个数组,该数组的元素只有第3个元素。
所以b和c分别是带有第一和第二变量的变量
就像:
b=$a[0];
c=$a[1];
和
arr=( 3 4 5 6 )`
答案 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")'