如何发起数组元素为0,在bash?(How to initiate array element to

2019-09-02 13:07发布

declare -a MY_ARRAY=()

请问阵列的声明以这种方式在bash将启动所有的数组元素为0?

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

Answer 1:

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

如果你想要初始化数组成员,你做这样的事情:

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数组不固定长度(也不指数必须是连续的)。 因此,除非你知道电话号码应该是什么样,你不能初始化数组的所有成员。



Answer 2:

默认值与关联数组

击阵列不是固定长度的数组,所以不能预先初始化所有元素。 索引数组也没有疏,所以你不能真正使用默认值,你在想的方式。

但是,您可以使用关联数组与遗漏值的扩展。 例如:

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

这将返回“巴兹”任何丢失的钥匙。 作为替代方案,而不是仅仅返回默认值,实际上你可以设置一个丢失的钥匙。 例如:

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

此备用调用将不只是返回“巴兹”,但它也将值存入数组供以后使用。 根据您的需求,这两种方法应该为你工作定义的使用情况。



Answer 3:

是的,它启动一个空数组并分配它MY_ARRAY 。 你可以用这样的验证:

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


文章来源: How to initiate array element to 0 in bash?
标签: linux bash shell