为什么不使用未设置的变量作为Bash中的数组索引返回元素0?

问题描述 投票:1回答:1

为什么bash数组中的空键总是零键元素?

尝试

empty_key=

h[0]=0
h[1]=1
h[2]=2

echo ${h[$empty_key]}

结果

0

您能否解释一下,为什么这种行为是正确的?

根据我的理解,它应该与]没有什么不同>

not_existing_key=5 
echo ${h[$not_existing_key]}

结果只是空的。

这很重要,要理解,如果将结果用于循环,如in

for element in ${h[$key]};do
  ...
done

[empty_key导致循环,但不是not_existing_key的地方。

为了避免这种行为,显然不要以索引0开始数组

OR

用任何未分配的键值替换空键(看起来很无聊)。

再次提出我的问题:为什么这种行为是正确的?

编辑:我的问题应该理解为,为什么这种行为在bash世界中是首选的,而不是没有键值的空结果?

为什么bash数组中的空键总是零键元素?尝试empty_key = h [0] = 0 h [1] = 1 h [2] = 2 echo $ {h [$ empty_key]}结果0您能否解释一下,为什么这种行为是正确的?在...

arrays bash
1个回答
7
投票
© www.soinside.com 2019 - 2024. All rights reserved.