数组的相关理论及操作

目录:

一、数组定义的方法

二、数据包括的数据类型

三、获取数组长度

四、获取数据列表

五、读取某下标赋值

六、数组遍历

七、数组切片

八、数组替换

九、数组删除

十、数组追加元素

十一、向函数传参

十二、从函数返回数组

 

 

 

一、数组定义的方法

 1 (30 20 10 60 50 40)
 2  0  1  2  3  4  5
 3  
 4 方法1:
 5 数组名= (value0 value1 value2 ...) 
 6 
 7 方法2:
 8 数组名=([0]=value [1]=value [2]=value ...)
 9 
10 方法3:
11 列表名="value0 value1 value2 ..."
12 数组名=($列表名)
13 
14 方法4:
15 数组名[0]="value"
16 数组名[1]="value"
17 数组名[2]="value"

 

 

 

 

 

 

 

 

二、数组包括的数据类型

数值类型

字符类型(使用" "或者’ '定义)

三、获取数组长度

1 arr number=(1 2 3 4 5)
2 arr_length=${#arr_number[*]}
3            ${#arr_number[@]}
4 echo $arr_length

 

 

 

 

 

四、获取数据列表

echo ${arr_number[*]}
echo ${arr_number[@]}

 

 

五、读取某下标赋值

arr_index2=${arr_number [2]}
echo $arr_index2

 

六、数组遍历

1 #!/bin/bash
2 
3 arr=(10 20 30 40 50)
4 for i in ${arr[@]}
5 do
6   echo $i
7 done

 

七、数组切片

1 arr=(1 2 3 4 5)
2 echo ${arr[@]}       #输出整个数组
3 echo ${arr[@]:0:2}   #获取${ 数组名[@或*] :起始位置:长度}的值
4 echo ${arr1[*]:1:3}
5 echo ${arr[@]:2:3}

 

 

八、数组替换

1 arr=(1 2 3 4 5)
2 echo ${arr[@]/4/66}  #${数组名[@或*]/查找字符/替换字符}
3 echo ${arr[@]}      #并不会替换数组原有内容
4 
5 arr=(${arr[@]/4/66})  #要实现改变原有数组,可通过重新赋值实现
6 echo ${arr[@]}

 

 

 

 

九、数组删除

1 arr=(1 2 3 4 5)
2 unset arr   #删除数组
3 echo ${arr[*]}
4 
5 arr=(1 2 3 4 5)
6 unset arr[2]    #删除第三个元素
7 echo ${arr[*]}

 

 

十、数组追加元素

 1 方法1:
 2 array_name[index]=value
 3 
 4 方法二:
 5 array_name[${#array_name[@]}]=value
 6 
 7 方法三:
 8 array_name=("${array_name[@]}" value1 ... valueN)
 9 #双引号不能省略,否则,当数组array_ name中存在包含空格的元素时会按空格将元素拆分成多个
10 #不能将“@”替换为“*”,如果替换为“*”,不加双引号时与“@”的表现一致, 加双引号时,会将数组array_ name中的所有元素作为一个 元素添加到数组中
11 for i in "${array_name[@]}"; do echo $i; done
12 
13 方法四:
14 array_name+=(value1...valueN)
15 待添加元素必须用“()"包围起来,并且多个元素用空格分隔

 

 

 

 

 

十一、向函数传参

 1 如果将数组变量作为函数参数,函数贝会取数组变量的第一个值
 2 
 3 test1() {
 4    echo "接收到的参数列表: $@"
 5    newarrary= ($1)
 6    echo "新数组的值为: ${newarrary[*]}"
 7 }
 8 
 9 array=(3 2 1 4 5)
10 echo "原始数组的值为: ${array[*]}"
11 test1 $array
12 
13 解决这个问题则需要将数组变量的值分解成单个的值,然后将这些值作为函数参数使用。在函数内部,再将所有的参数重新组合成一个新
14 的数组变量
15 
16 test2() {
17    newarrary=($(echo $@))
18    echo "新数组的值为: $ {newarrary[*]}"
19 }
20 
21 array=(3 2 1 4 5)
22 echo "原始数组的值为: ${array[*]}"
23 test2 ${array[*]}

 

 

十二、从函数返回数组

 1 test2() {
 2 newarrary=(`echo $@ `)
 3 sum=0
 4 
 5 for value in ${newarrary[*]}
 6 do
 7     sum=$ [$sum + $value]
 8 done
 9 echo $ sum
10 }
11 
12 test3 (){
13 newarrary=(`echo $@`)
14 for ((i=0; i<=$[$# - 1] ; i++))
15 newarrary[$i]=$[${newarrary[$i]} * 2]
16 echo $ {newarrary[*] }
17 }
18 
19 array=(3 2 1 4 5)
20 echo "原始数组的值为: ${array[*]}"
21 
22 result1='test2 ${array[*]}‘
23 echo "新数组的和为: $result1"
24 
25 result2=(`itest3 ${array[*]}`)
26 echo "新数组的值为: ${result2[*]}"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2021-07-31 16:15  咖啡coffee  阅读(87)  评论(0)    收藏  举报