Linux shell编程(shell数组定义和操作详解)

上一章Linux shell编程请查看:shell特殊变量介绍和使用
在本章中我们将讨论如何在Unix中使用shell数组。shell变量能够容纳单个值,些变量称为标量变量,shell支持另一种类型的变量称为数组变量。它可以同时保存多个值,数组提供了一种对一组变量进行分组的方法。
你可以使用存储所有其他变量的单个数组变量,而不是为每个需要的变量创建新名称,为Shell变量讨论的所有命名规则在命名数组时都是适用的。
1、定义数组数组变量和标量变量之间的区别可以解释如下:假设你试图将不同学生的名字表示为一组变量,每个单独的变量都是一个标量变量如下所示:

NAME01="AAA" NAME02="BBB" NAME03="CCC" NAME04="DDD" NAME05="EEE"

我们可以使用单个数组来存储上述所有名称,下面是创建数组变量的最简单方法,这有助于将一个值赋给它的一个索引。
array_name[index]=value

这里array_name是数组的名称,index是要设置的数组中项的索引,value是要为该项设置的值例如下面的命令:
NAME[0]="AAA" NAME[1]="BBB" NAME[2]="CCC" NAME[3]="DDD" NAME[4]="EEE"

如果你正在使用ksh shell,以下是数组初始化的语法:
set -A array_name value1 value2 ... valuen

如果你使用的是bash shell,以下是数组初始化的语法:
array_name=(value1 ... valuen)

2、访问数组元素设置任何数组变量之后,按如下方式访问它:
${array_name[index]}

这里array_name是数组的名称,index是要访问的值的索引。下面是一个理解这个概念的示例:
#!/bin/bash my_arr=(AAA BBB CCC) echo ${my_arr[0]} echo ${my_arr[1]} echo ${my_arr[2]}

你可以通过以下方式之一访问数组中的所有项:
${array_name[*]} ${array_name[@]}

这里,array_name是你自定义的数组的名称,下面的例子将帮助你理解这个概念:
#!/bin/bash my_arr=(AAA BBB CCC) echo ${my_arr[0]} echo ${my_arr[1]} echo ${my_arr[2]} echo "----------" echo ${my_arr[*]} echo ${my_arr[@]}

3、获取数组长度【Linux shell编程(shell数组定义和操作详解)】获取数组长度的方法和获取字符串长度的方法是一样的,使用如下语法获取长度:
length=${#string_name} length=${#array_name}

如下例子是获取字符串长度和数组:
#!/bin/bash my_arr=(AAA BBB CCC) echo ${my_arr[0]} echo ${my_arr[1]} str="once upon a time" echo $str echo "length of string: ${#str}" echo "length of array: ${#my_arr}"

    推荐阅读