个性化阅读
专注于IT技术分析

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、获取数组长度

获取数组长度的方法和获取字符串长度的方法是一样的,使用如下语法获取长度:

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}"

赞(0)
未经允许不得转载:srcmini » Linux shell编程:shell数组定义和操作详解

评论 抢沙发

评论前必须登录!