数组的相关理论及操作
目录:
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[*]}"



浙公网安备 33010602011771号