shell脚本数组

目录

一、数组定义方法

 二、引用数组的值

1.获取数组的数据列表(即所有元素值)

 2.查看数组内某一元素的值

3.获取数组的长度

 三、数组分片(数组截取)

四、数组替换 

4.1 临时替换

4.2 永久替换

五、删除数组

六、增加数组内的元素 


一、数组定义方法

数组用括号来表示,元素用"空格"符号分隔开

法一:
数组名=(value1  value2 value3 value4 ...)

法二:
先定义列表,再引用列表的值定义数组。
列表名="value1  value2 value3 value4 value5"
 数组名=($列表名)

法三:
用过下标值定义每个元素。
数组名=([0]=value1  [1]=value2  [2]=value3)

法四:
通过下标值,一个一个定义数组内的每个元素。
同时也可以通过这种方式修改元素的值。
数组名[0]=value1
 ​
 数组名[1]=value2
 ​
 数组名[2]=value3
 ​
 数组名[3]=value4

shell脚本数组_第1张图片

 二、引用数组的值

1.获取数组的数据列表(即所有元素值)

echo ${array[@]}
 或
echo ${array[*]}

shell脚本数组_第2张图片

 2.查看数组内某一元素的值

${数组名[n]}       //n代表元素的下标
 ​
 echo ${array[0]}   //获取数组内第一个元素的值(下标为0的元素值)
 echo ${array[1]}   //获取数组内第二个元素的值(下标为1的元素值)

shell脚本数组_第3张图片

3.获取数组的长度

echo ${#数组名[*]}
echo ${#数组名[@]}

 三、数组分片(数组截取)

arr=(10 20 30 40 50)
echo ${arr[*]}           
echo ${arr[@]}       #输出整个数组,此处*与@相同
echo ${arr[@]:0:2}   #获取 ${数组名[@或*]:起始位置:长度} 的值
echo ${arr[#]:3:2}

shell脚本数组_第4张图片

四、数组替换 

4.1 临时替换

echo ${数组名[@]/旧字符/新字符}    

//会替换所有元素中能匹配到的字符,但这是临时替换,不会改变原有数组的值

shell脚本数组_第5张图片

4.2 永久替换

数组名=(${数组名[@]/旧字符/新字符})

shell脚本数组_第6张图片

五、删除数组

unset 数组名[n]        //删除数组内的某一个元素,n为下标值

 

六、增加数组内的元素 

#方法1
 数组名[n]=元素值       //使用下标值直接增加元素
 ​
 #方法2
 数组名+=(元素1 元素2 .....)
 ​
 #方法3
 数组名[数组长度]=元素值     //此种方法必须保证数组元素是完整的,如果某个下标被跳过了,此种方法会替换掉原来的某个元素
 ​
 #方法4
 数组名=("${数组名[@]}" 元素1 元素2 .....)
//引用数组值必须加双引号,不然原数组内有空格的单个元素(例如"zhang san")会被当成2个元素。
//且必须使用@,因为加上双引号之后"$@"表示将所有参数当作个体,而$*表示将所有参数当作一个整体。

七、将数组的值传给函数

第一步:向函数传入数组的时候需要先把数组转换成列表作为函数的参数使用:
 函数名 ${数组名1[@]}
 ​
 第二步:在函数内把传入的列表重新组合成数组:
 数组名2=($@)
 ​
 第三步:在函数外重新组合成数组:
 数组名3=(`函数名 ${数组名1[@]}`)
#!/bin/bash

fun01 () {
#不能写$1,否则只会输出数组的第一个元素
   echo "函数接收到的参数为:$@"
#在函数内把传入的列表重新组合成数组
   newarr=($@)
   echo "新数组的值为:${newarr[@]}"
}
  
#### main ####
arr=(1 2 3 4 5)
echo "原数组的值为:${arr[@]}"
#把数组转换成列表作为函数的参数使用
fun01 ${arr[@]}

shell脚本数组_第7张图片

 

你可能感兴趣的:(编辑器)