Linux Shell 脚本:数组 0 个改进

本章将讨论如何使用 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
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!