declare -a MY_ARRAY=()
bash中以这种方式声明数组是否会将所有数组元素初始化为0?
如果不是,如何将数组元素初始化为 0?
您的示例将声明/初始化一个空数组。
如果要初始化数组成员,请执行以下操作:
declare -a MY_ARRAY=(0 0 0 0) # this initializes an array with four members
如果你想初始化一个有 100 个成员的数组,你可以这样做:
declare -a MY_ARRAY=( $(for i in {1..100}; do echo 0; done) )
请记住,bash 中的数组不是固定长度的(索引也不必是连续的)。因此,除非您知道数字应该是什么,否则您无法初始化数组的所有成员。
Bash 数组不是固定长度的数组,因此您不能预先初始化所有元素。索引数组也不是稀疏的,因此您不能真正按照您的想法使用默认值。
但是,您可以使用关联数组来扩展缺失值。例如:
declare -A foo
echo "${foo[bar]:-baz}"
这将为任何丢失的键返回“baz”。作为替代方案,您实际上可以为缺少的键设置一个,而不仅仅是返回一个默认值。例如:
echo "${foo[bar]:=baz}"
这种备用调用不仅会返回“baz”,还会将值存储到数组中以供以后使用。根据您的需要,任何一种方法都应该适用于您定义的用例。
是的,它启动一个空数组并将其分配给MY_ARRAY
. 您可以通过以下方式进行验证:
#!/bin/bash
declare -a MY_ARRAY=()
echo ${#MY_ARRAY} # this prints out the length of the array