声明一个数组但没有定义它?

声明一个数组但没有定义它?

有很多的指南 在那里展示如何声明和定义数组

foo[0]=abc 
foo[1]=def

我想要实现的是声明一个数组但不定义它,因为它不必立即定义,在大多数编程语言中它看起来像这样

int bar[100];

这在 shell 脚本语言中可行吗?

答案1

您可以通过创建一个空数组来指定变量是一个数组,如下所示:

var_name=()

var_name然后将是一个数组,如下所述

$ declare -p var_name
declare -a var_name='()'

例子:

var_name=()
for i in {1..10}; do
    var_name[$i]="Field $i of the list"
done
declare -p var_name
echo "Field 5 is: ${var_name[5]}"

输出如下内容:

declare -a var_name='([1]="Field 1 of the list" [2]="Field 2 of the list" [3]="Field 3 of the list" [4]="Field 4 of the list" [5]="Field 5 of the list" [6]="Field 6 of the list" [7]="Field 7 of the list" [8]="Field 8 of the list" [9]="Field 9 of the list" [10]="Field 10 of the list")'
Field 5 is: Field 5 of the list

答案2

除了上述方式之外,我们还可以通过declare语句创建数组。

带有 -a 选项的 declared 语句可用于将变量声明为数组,但这不是必需的。所有变量都可以用作数组,无需明确定义。事实上,从某种意义上说,所有变量都是数组,没有下标的赋值与赋值给“[0]”相同。使用 declared 内置函数可以显式声明数组:

declare -a ARRAYNAME

关联数组是使用

declare -A name.

可以使用内建的declare和readonly为数组变量指定属性。每个属性都适用于数组的所有成员。

设置任何数组变量后,可以按如下方式访问它:

${array_name[index]}

答案3

这实际上与 C 相同。在 C 中,我们可以根据需要使用数组。在这里,我们可以取一个空数组,然后放入任意值。

bar=()

简单的 For 循环获取该数组中的值并打印:

bar=()
for ((i=0;i<10;i++));
do
    read bar[$i]  #Take Value in bar array
    echo bar[$i]
done

希望能帮助到你。

相关内容