在命令行中被列表困惑

时间:2015-03-05 22:52:59

标签: linux bash list

我今天遇到过这样的事情。

lst=(1 2 3 4)
echo $lst

打印

1

过了一段时间我做了这个

lst=(1,2,3,4)
echo $lst

并且正确地获得了1,2,3,4

为什么它会像这样?我不确定这里发生了什么,但我相信它与原始lst=(1 2 3 4)

中的空格有关。

但我想知道的是,如果我们使用逗号而不是空格,为什么会有所不同?

1 个答案:

答案 0 :(得分:2)

为什么lst=(1 2 3 4); echo $lst打印1

因为你已经使lst成为一个包含四个元素的数组。如果引用不带下标的数组变量,bash将使用带有下标0的元素,就像输入了echo ${lst[0]}

一样

为什么lst=(1,2,3,4)会有所不同?

因为在数组赋值中,元素是通过正常的分词产生的,这种分裂发生在空白区域。逗号不是特殊的,因此lst=(1,2,3,4)使lst成为具有1个元素(其下标为0)的数组变量。

如何查看数组的所有元素?

像这样:

echo "${lst[@]}"