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

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[@]}"

10-08 08:08
查看更多