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
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!