关于将值插入数组

时间:2013-12-27 07:19:20

标签: arrays shell

我有一个关于将值插入数组的问题。我正在编写一个for循环,将1到10的整数插入到数组中。数组名称为drivelist,整数变量为loc

drivelist=($drivelist $loc)

但代码行有问题;它只保存第一个值和最后一个值 但是,如果我像这样修改代码,那么它可以正常工作:

drivelist=( ${drivelist[@]} $loc )

为什么错误的代码只能保存两个值?

1 个答案:

答案 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) )

括号周围的空格是可选的。第一个括号开始一个数组赋值; $(...)运行命令并将输出拆分为分配给数组元素的单词,最后的括号关闭数组赋值。