如何在bash中启动数组元素为0?

declare -a MY_ARRAY=() 

bash中以这种方式声明数组是否会将所有数组元素初始化为0?

如果不是,如何启动数组元素为0?

Solutions Collecting From Web of "如何在bash中启动数组元素为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