Linux Shell 脚本:数组
本章将讨论如何使用 Unix 外壳数组变量。一个外壳变量有能力维持一个单一的变量值。这种变量称为 标量(scalar variables) 。
外壳程序支持另外不同的变量类型,称为 数组变量(array variable) 。这种变量可一次维持多个变量值,数组变量提供维持一组变量或数据集的能力,代替每个值都必须创建一个变量的处理方式。你可以使用一个数组变量名引用其维持的每个不同的单个变量。
所有的变量命名规则适用于数组变量名的命名。
定义数组变量中每个元素变量值
一个数组变量和标量的不同,见如下解释。
假定你想表示多个不同学生姓名的一系列变量。每个学生姓名用一个变量去存储访问,如下表示:
NAME01="Zara" NAME02="Qadir" NAME03="Mahnaz" NAME04="Ayan" NAME05="Daisy" 我们可以使用一个数组变量去维护这些姓名,下面是创建一个数组变量维护多个变量值的最简单的方法。这利用了数组的顺序指示器(索引)维护多个变量值。
array_name[index]=value 这里 array_name 是数组变量的变量名,index 是数组的索引,你可以利用数组索引去赋值或引用在数组变量索引位置的变量值。
举例,如下命令给数组变量中的每个元素(变量)赋值:
NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" 如果使用 ksh 外壳程序,有如下初始化数组变量语法:
set -A array_name value1 value2 ... valuen 如果使用 bash 外壳程序,使用如下初始化数组变量语法:
array_name=(value1 ... valuen) 引用访问数组变量元素值
初始化赋值数组变量后,使用如下语法引用访问数组变量中具体元素值:
${array_name[index]} 这里 array_name 是数组变量名,index 是需访问的数组元素的索引值。下面输出例子帮助你理解其概念:
#!/bin/sh NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Index: ${NAME[0]}" echo "Second Index: ${NAME[1]}" 上述脚本执行输出如下:
$./test.sh First Index: Zara Second Index: Qadir 你也可使用如下语法访问数组中所有数组元素值:
${array_name[*]} ${array_name[@]} 这里 array_name 被具体定义的数组变量名替换,下面的例子帮助你理解其概念:
#!/bin/sh NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Method: ${NAME[*]}" echo "Second Method: ${NAME[@]}" 上述脚本输出如下:
$./test.sh First Method: Zara Qadir Mahnaz Ayan Daisy Second Method: Zara Qadir Mahnaz Ayan Daisy
Server 社区 Wiki
关于 LearnKu