我今天遇到过这样的事情。
lst=(1 2 3 4)
echo $lst
打印
1
过了一段时间我做了这个
lst=(1,2,3,4)
echo $lst
并且正确地获得了1,2,3,4
为什么它会像这样?我不确定这里发生了什么,但我相信它与原始lst=(1 2 3 4)
但我想知道的是,如果我们使用逗号而不是空格,为什么会有所不同?
答案 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[@]}"