在bash中提取数组元素

在bash中提取数组元素,bash,Bash,我有一个数组a=(123456) 现在,我想将数组的1和2个元素提取到两个不同的变量中,并将数组a的其余元素分配给另一个数组,该数组的元素仅在第3个元素之前。 所以b和c分别是第一个和第二个变量 正如: b=$a[0]; c=$a[1]; 及 $a[0]不会将[0]视为扩展的一部分,而是要附加的单独字符串。如中所示,从数组中提取内容时,需要使用大括号包围下标 …正确地发射: declare -- b="1" declare -- c="2" declare -a arr='([0]="3"

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

正如:

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


$a[0]
不会将
[0]
视为扩展的一部分,而是要附加的单独字符串。如中所示,从数组中提取内容时,需要使用大括号包围下标


…正确地发射:

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

$a[0]
不会将
[0]
视为扩展的一部分,而是要附加的单独字符串。如中所示,从数组中提取内容时,需要使用大括号包围下标


…正确地发射:

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

顺便说一句,在现实世界中,如果在函数上下文或其他地方,保存
“$@”
中的值并不重要,我可以使用
集--“${a[@]}”来实现这一点;b=1美元;转移;c=1美元;转移;arr=(“$@”)
。这有助于从询问“我什么时候需要大括号?”切换到“我什么时候可以省略大括号?”第二个问题的答案比第一个问题的答案短得多(“当扩展名只是一个变量名,后面没有有效的标识符字符时)。顺便说一句,在现实世界中,如果在函数上下文或其他地方,保存
“$@”
中的值并不重要,我可以使用
集--“${a[@]}”来实现这一点;b=1美元;转移;c=1美元;转移;arr=(“$@”)
。这有助于从问“我什么时候需要大括号?”切换到“我什么时候可以省略大括号?”第二个问题的答案比第一个问题的答案要短得多(“当扩展名只是一个变量名,后面没有有效的标识符字符时)。
arr=(“${a[@]:2}”)
从第二个元素到数组末尾的平均值?准确;这是包含的链接中描述的
${PARAMETER:OFFSET:LENGTH}
语法的数组版本,也包括在
arr=(“${a[@]:2}”)
表示从第二个元素开始到数组结尾的意思吗;这是包含的链接中描述的
${PARAMETER:OFFSET:LENGTH}
语法的数组版本,在
declare -- b="1"
declare -- c="2"
declare -a arr='([0]="3" [1]="4" [2]="5" [3]="6")'