shell五点一之数组

Posted 遙遙背影暖暖流星

tags:

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

一、数组

1、数组的四种定义

1,方法一
数组名=(value0 value1 value2 value3...)
例:老婆=(iu 石原里美 刘亦菲 赵丽颖)
2、方法二
数组名=([0]=value [1]=value [2]=value ...)
例:老婆=([0]iu [1]石原里美 [2]刘亦菲 [3]赵丽颖)
#因为标号默认是从0开始的,这个方法可以指定组中元素的编号,比如[100]刘亦菲

3、方法三
列表名="value0 value1 value2..."
数组名=($列表名)
例:车里=“iu 石原里美 刘亦菲 赵丽颖”
    老婆=($车里)
#就是定义整个数组时一定要有括号()
4、方法四
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
例:老婆[0]=iu
老婆[1]=石原里美
老婆[2]=刘亦菲

2、数组的遍历

a=(1 2 3 4 )
echo ${a{*}} 或者echo ${a[@]}   
1 2 3 4
----------------
#显示该数组的全部内容,注意a带中括号[]

3,数组的长度

a=(1 2 3 4)
echo ${#a[*]} 或者echo ${#a[@]}   
4

//也就是在a[@]前面的加#

4、数组替换

方法:${数组名[@或*]/查找字符/替换字符}
a=(1 2 3 4)
echo ${a[@]/4/66}  #${数组名[@或*]/查找字符/替换字符}
1 2 3 66
echo ${a[@]}       #并不会替换数组原有内容
1 2 3 4

a=(${a[@]/4/66})
echo ${a[*]}
1 2 3 66
#若想重新定义某个元素,a=()
//被替换的内容放中间

方法二:按编号替换
a[0]=100
#将第一个换成的100

5、数组的删除

unset  a  #取消整个数组,和取消变量一样
a=(1 2 3 4)
unset a[2]  #删除数组里第三个元素
echo ${a[*]}
1 2 4

6、元素的增加

方法1:
a[index]=value 

方法2:
a[${#a[@]}]=value
#其实是因为从[0]开始,a[个数]刚好就是新的编号
方法3:
a=("${a[@]}" value1...valueN)
注意:双引号不能省略。否则当数组a中包含有空格的元素时会按空格将元素拆分成多个,不能把“@”换成“*”,如果替换成“*”,不加双引号时和“@”表现一致,加双引号时会将数组a中的所有元素作为一个元素

方法4:
a+=(value1...valueN)
待添加的元素必须用()包围起来,并且多个元素用空格分隔

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

一点一滴学shell

一点一滴学shell-Shell expr的用法 (转)

Shell脚本一点一点

Scala学习笔记一之基础语法,条件控制,循环控制,函数,数组,集合

Shell编程入门

数据结构和算法--链表一之单向链表的简单实现