linux之shell数组的使用

Posted 永远不要矫情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之shell数组的使用相关的知识,希望对你有一定的参考价值。

在shell中,数组是一种特殊的数据结构。数组中的每一项被称为元素,元素可以通过索引方式取出其值。只支持一维数组,对元素个数没有限制,因为shell变量是弱类型,所以并不要求每个元素都是相同类型。

1.数组定义

1.1使用declare命令定义

  • 使用declare命令先定义数组,再初始化。赋值时元素的数据类型不同.数组的索引从0开始,与java相同。
[test@node1 ~]$ declare -a Array1
[test@node1 ~]$ Array1[0]=1
[test@node1 ~]$ Array1[1]='a'
  • 使用declare命令定义数组同时初始化,且初始化后还可改变数组大小。注意对所有元素同时初始化时,值之间使用空格。
[test@node1 ~]$ declare -a Array2=(1 'b')
[test@node1 ~]$ Array2[2]='a'

1.2不使用declare命令
不使用declare命令的语法如下:

[test@node1 ~]$ Array3=(1 'b')

还可以给特定的元素赋值,例如:对第5个位置和第10个位置的元素赋值:

[test@node1 ~]$  Array3=([4]=4 [9]=5)

2.数组操作

2.1 数组取值
数组取值的格式为:${数组名[索引]};例如取第2个元素的值

[test@node1 ~]$ test_array=('a' 1 'c' 'd')
[test@node1 ~]$ echo ${test_array[1]}
1

若想取出所有的值,使用以下两种方式:

[test@node1 ~]$ Array1=(1 'a')
[test@node1 ~]$ echo ${Array1[*]}
1 a
[test@node1 ~]$ echo ${Array1[@]}
1 a

从表面上看,两者并没什么区别,但是 A r r a y 1 [ @ ] 得 到 的 是 以 空 格 隔 开 的 元 素 值 ; 而 {Array1[@]}得到的是以空格隔开的元素值;而 Array1[@]{Array1[*]}输出的是一整个字符串。

2.2 数组长度
数组长度:即数组元素个数。利用"@“或”*“字符,将数组扩展成列表,然后使用”#"来获取数组元素的个数。例如:

[test@node1 ~]$ echo ${#Array1[@]}
2
[test@node1 ~]$ echo ${#Array1[*]}
2

2.3 数组截取
数组截取:截取整个数组或某个元素的一部分。例如:
取出数组的第一个,第二个元素

[test@node1 ~]$ my_array=(1 'a' 'HelloWorld')
[test@node1 ~]$ echo ${my_array[@]:1:2}
a HelloWorld

取出第三个元素从第0个字符开始连续5个字符

[test@node1 ~]$ echo ${my_array[2]:0:5}
Hello

2.4 连接数组
连接数组:若干个数组进行拼接操作

[test@node1 ~]$ Conn=(${Array1[@]} ${my_array[@]})
[test@node1 ~]$  echo ${Conn[@]}
1 a 1 a HelloWorld

2.5 替换数组
替换数组:将数组内某个元素的值进行替换

[test@node1 ~]$ Array1=(1 'a')
[test@node1 ~]$ Array1=(${Array1[@]/a/b})
[test@node1 ~]$ echo ${Array1[@]}
1 b

2.6 取消数组或元素
取消数组或元素使用的命令为unset

[test@node1 ~]$ Array1=(1 'a')
[test@node1 ~]$ unset Array1[1]
[test@node1 ~]$ echo ${Array1[@]}
1
[test@node1 ~]$ unset Array1
[test@node1 ~]$ echo ${Array1[@]}

以上是关于linux之shell数组的使用的主要内容,如果未能解决你的问题,请参考以下文章

Linux Shell系列教程之Shell数组

linux之Shell编程--Shell数组实例演示

shell 之解释器变量字符串数组

Linux系统shell脚本之随机数组

linux—shell编程之数组和字符串处理工具

dba之Linux Shell中的数组及遍历