Linux shell支持另一种类型的变量,称为数组变量。可以同时保存多个值。数组提供了对一组变量进行分组的方法。可以使用一个存储所有其他变量的数组变量,而不是为每个必需的变量创建一个新名称。

1、定义数组值

数组变量和标量变量之间的区别:

假设试图将不同编程语言的名字表示为一组变量。每个单独的变量是一个标量变量,如下所示,

NAME01="C"
NAME02="JAVA"
NAME03="Python"
NAME04="CJavaPy"

可以使用一个数组来存储上述所有名称。定义数组的语法如下:

array_name=(value1 ... valuen)

array_name是数组的名称,value1 ... valuen是要为该元素设置的值。有其它编程语言的基础应该就很好理解。

例如,

PROGRAMS=("C" "JAVA" "Python" "CJavaPy")

上述是bash脚本的语法,其它脚本稍有区别:

1)sh中语法

array_name[index]=value

2)ksh中语法

set -A array_name value1 value2 ... valuen

2、访问数组中元素

在定义数组变量之后,可以如下方式访问它:

${array_name[index]}

array_name是数组的名称,index是要访问的值的索引。

例如,

#!/bin/bash
PROGRAMS=("C" "JAVA" "Python" "CJavaPy")
echo "第一个元素: ${PROGRAMS[0]}"
echo "第二个元素: ${PROGRAMS[1]}"

输出:

$ ./demo.sh
第一个元素: C
第二个元素: Java

可以通过下列方式之一访问数组中的所有元素:

${array_name[*]}
${array_name[@]}

例如,

#!/bin/bash
PROGRAMS=("C" "JAVA" "Python" "CJavaPy")
echo "第一个: ${PROGRAMS[*]}"
echo "第二个: ${PROGRAMS[@]}"

输出:

$ ./demo.sh
第一个: C JAVA Python CJavaPy
第二个: C JAVA Python CJavaPy

推荐文档