shell 数组

在Shell编程中,数组是一种非常有用的数据结构,它可以用来存储一组相关数据,并且可以根据下标来获取或修改数据。本文将介绍Shell中数组的使用,包括数组的多种定义方法、数组使用方式和数组的取值方式。

1. 数组的定义方法

在Shell中,数组可以通过多种方式来定义,以下是三种常见的定义方式:

a) 使用declare命令定义数组:

declare -a array_name

其中,-a表示把变量array_name定义为数组类型。

b) 直接赋值定义数组:

array_name=(value1 value2 ... valuen)

其中,value1、value2等为数组中的元素。使用圆括号括起,空格隔开数组元素

c) 动态赋值定义数组:

array_name[0]=value1
array_name[1]=value2
...
array_name[n]=valuen

其中,n为数组的元素个数,value1、value2等为数组中的元素。

2. 数组的使用方式

Shell中数组的使用方式如下:

a) 获取数组中所有元素:

${array_name[@]}

b) 获取数组中指定下标的元素:

${array_name[index]}

其中,index为下标值。

c) 获取数组中所有元素的个数:

${#array_name[@]}

d) 获取数组中所有元素的下标:

${!array_name[@]}

e) 给数组中指定下标的元素赋值:

array_name[index]=new_value

f) 向数组中添加新元素:

array_name+=(new_value)

g) 删除数组中指定下标的元素:

unset array_name[index]

3. 数组的取值方式

在Shell中,数组可以通过下标来获取或修改数据。数组下标从0开始,例如:

array_name=(value1 value2 value3)
echo ${array_name[0]} # 输出结果为value1
array_name[1]=new_value2
echo ${array_name[1]} # 输出结果为new_value2

for in 在数组取值上的使用

my_array=("Lily" "Xiaoming" "Belly");for i in ${my_array[@]};do echo $i;done
Lily
Xiaoming
Belly

4,关联数组

shell中支持关联数组,可使用任意的字符串、获整数下标来访问数组元素

关联数组使用声明。关联数组的键是唯一的。

declare -A array_name

 可声明一个关联数组并且赋值

declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")

或者先声明,稍后赋值

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

 取值:

echo ${site["runoob"]}  #www.runoob.com

通过@或者*号可以直接取数组中所有元素

echo "数组的元素为: ${site[*]}"

echo "数组的元素为: ${site[@]}" 

数组的元素为: www.google.com www.runoob.com www.taobao.com
数组的元素为: www.google.com www.runoob.com www.taobao.com

在数组前加!号可以取出所有的键值

 echo "数组的键为: ${!site[*]}"
echo "数组的键为: ${!site[@]}"

#

数组的键为: google runoob taobao
数组的键为: google runoob taoba

数组前加#号可以取出数组长度

 echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}

5. 数组在Shell编程中的常见使用

数组在Shell编程中使用广泛,以下是几个常见的使用场景:

a) 使用数组存储多个文件名,然后进行遍历、复制、删除等操作。

b) 使用数组存储多个命令的输出结果,然后进行比对、判断等操作。

c) 使用数组存储多个选项的值,然后进行参数解析、处理等操作。

总之,Shell中的数组非常强大,可以用来存储、处理和操作各种数据。掌握数组的使用方法,可以让Shell编程变得更加高效和便捷。

你可能感兴趣的:(shell,linux)