我今天遇到了这样的事情。
lst=(1 2 3 4)
echo $lst
版画
1
一段时间后,我做到了
lst=(1,2,3,4)
echo $lst
并正确得到
1,2,3,4
为什么会这样呢?我不确定这是怎么回事,但我相信这与原始
lst=(1 2 3 4)
中的空格有关但是我想知道的是,如果使用逗号而不是空格,为什么会有所不同?
最佳答案
为什么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[@]}"