我有一个关于将值插入数组的问题。我正在编写一个for循环,将1到10的整数插入到数组中。数组名称为drivelist
,整数变量为loc
。
drivelist=($drivelist $loc)
但代码行有问题;它只保存第一个值和最后一个值 但是,如果我像这样修改代码,那么它可以正常工作:
drivelist=( ${drivelist[@]} $loc )
为什么错误的代码只能保存两个值?
答案 0 :(得分:5)
您只在阵列中获得两个项目,因为$drivelist
等同于${drivelist[0]}
,因此列表中只有该项目和$loc
被重新分配给数组。
您还可以使用drivelist+=($loc)
一次向一个数组中添加项目:
drivelist=()
for loc in $(seq 1 10)
do
drivelist+=($loc)
done
printf "[%s]\n" "${drivelist[@]}"
示例输出:
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
当然,对于本练习,使用起来会更简单和充分:
drivelist=( $(seq 1 10) )
括号周围的空格是可选的。第一个括号开始一个数组赋值; $(...)
运行命令并将输出拆分为分配给数组元素的单词,最后的括号关闭数组赋值。