如何在shell中创建一个数组?

时间:2012-02-28 12:13:21

标签: linux shell

现在我用一种丑陋的方式在shell中创建数组,例如

ARG_ARRAY=(num1 num2 num3 num4 num5 num6 num7 num8 num9 num10)

这可以更优雅吗?像C方式,例如

ARG_ARRAY=num[10]

3 个答案:

答案 0 :(得分:4)

$ ARG_ARRAY=(num{1..10})

$ echo ${ARG_ARRAY[@]}
num1 num2 num3 num4 num5 num6 num7 num8 num9 num10

答案 1 :(得分:3)

如果要显式声明ARG_ARRAY是一个数组,请使用(bash):

declare -a ARG_ARRAY

然后您可以使用以下方式设置其值:

ARG_ARRAY[$index]=whatever

您无法为索引数组指定大小,如果您尝试访问索引,则尚未设置的索引将为空。

答案 2 :(得分:2)

如果要声明数组常量,可以在设置值后轻松完成:

$ ARG_ARRAY=(num1 num2 num3 num4 num5 num6 num7 num8 num9 num10)
$ declare -r ARG_ARRAY

这显然可以保护整个阵列:

$ ARG_ARRAY=(new)
bash: ARG_ARRAY: readonly variable

它还可以保护个别元素不被更改:

$ ARG_ARRAY[0]=new
bash: ARG_ARRAY: readonly variable

...并插入:

$ ARG_ARRAY[20]=new
bash: ARG_ARRAY: readonly variable