上一章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、获取数组长度
获取数组长度的方法和获取字符串长度的方法是一样的,使用如下语法获取长度:
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}"
评论前必须登录!
注册