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

时间:2013-05-10 16:34:12

标签: linux bash shell

declare -a MY_ARRAY=()

在bash中以这种方式声明数组是否会将所有数组元素都启动为0?

如果没有,如何将数组元素启动到0?

3 个答案:

答案 0 :(得分:16)

您的示例将声明/初始化一个空数组。

如果要初始化数组成员,可以执行以下操作:

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中的数组不是固定长度(索引也不必是连续的)。因此,除非您知道数字应该是什么,否则无法初始化数组的所有成员。

答案 1 :(得分:2)

具有关联数组的默认值

Bash数组不是固定长度数组,因此您无法预初始化所有元素。索引数组也不稀疏,因此您无法按照您的思维方式使用默认值。

但是,可以使用关联数组和缺失值的扩展。例如:

declare -A foo
echo "${foo[bar]:-baz}"

这将为任何丢失的密钥返回“baz”。作为替代方案,您可以实际设置一个用于丢失密钥,而不仅仅是返回默认值。例如:

echo "${foo[bar]:=baz}"

这个备用调用不仅会返回“baz”,而且还会将值存储到数组中供以后使用。根据您的需要,任何一种方法都适用于您定义的用例。

答案 2 :(得分:-1)

是的,它会启动一个空数组并将其分配给MY_ARRAY。您可以使用以下内容进行验证:

#!/bin/bash
declare -a MY_ARRAY=()
echo ${#MY_ARRAY} # this prints out the length of the array