声明一个数组但不定义它?

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

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

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

 int bar[100]; 

这可能是shell脚本语言吗?

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

 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 

除了上面的方法,我们还可以通过declare语句创建一个数组。

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

 declare -a ARRAYNAME 

使用关联数组创建

 declare -A name. 

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

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

 ${array_name[index]} 

这实际上与C相同。在C中,我们可以根据您的喜好选择数组。 在这里,我们可以取一个空数组,然后放入任何值。

 bar=() 

Simple For循环在该数组中取值并打印:

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

希望能帮助到你。