文章目录
- 一.数组
- 1.1数组定义的方法
- 1.2示例在这里插入图片描述
- 二.数组包
- 2.1数组包括的数据类型
- 2.2传输数组
- 2.3返回数组
一.数组
1.1数组定义的方法
(30 20 10 60 50 40) //以空格相间隔的数组
0 1 2 3 4 5 //下标
方法一:
数组名=(value0 value1 value2 …)
方法二:
数组名=([0]=value [1]=value [2]=value …)
方法三:
列表名=“value0 value1 value2 …”
数组名=(s列表名)
方法四:
数组名[O]=“value”
数组名[1]=“value”
数组名[2]=“value”
1.2示例在这里插入图片描述
(1)输出一共数组的值:
(2)检测数组长度:
字符串 | 作用 |
---|---|
$(arr[@]) 或 $(arr[*]) | 获取数组的所有元素的列表 |
$(!arr[@]) 或 $(!arr[*]) | 获取数组的所有字符下标 |
$(#arr[@]) $(#arr[*]) | 获取数组的元素个数/长度 |
$(arr[下标]) | 获取数组的某个元素的值 |
unset arr[下标] | 删除数组某个元素 |
unset arr | 删除数组某个元素 |
${arr[@]:下标:长度} | 数组切片,获取从数组的某个下标开始的多少个元素 |
${arr[@]/旧日字符/新字符} | 数组字符替换 |
二.数组包
2.1数组包括的数据类型
- 数值类型
- 字符类型:
使用 " "或 ' ' 定义
(1)获取数组长度:
arr_number=(1 2 3 4 5)
arr_length=${#arr_number[*] }
${#arr_number[@]}
echo $arr_length
(2)获取数组数据列表
echo ${arr_number[*]}
echo ${arr_number[e] }
(3)获取数组下标列表
echo $( #arr_number[*] }
(4)读取某下标赋值
arr_index2=${arr_number[2] }
echo $arr_index2
(5)数组遍历
#!/bin/bash
arr_number=(1 2 3 4 5)
for v in $(arr_number[@])
do
echo $v
done
(6)数组追加
方法一:
array_name[index]=value
方法二:
array_name[${#array_name[0]}]=value
方法三:
array_namet("$array_name[@l]n valuel … valueN)
双引号不能省略,否则,当数组array_name中存在包含空格的元素时会按空格将元素拆分成多个
不能将"@"替换为“ * “,如果替换为” * “,不加双引号时与”@"的表现一致,加双引号时,会将数组array_name中的所有元素作为一个元素添加到数组:
for i in “${array _namele]l” ; do echo $i; done
方法四:
array_name+=(valuelwalueN) //待添加元素必须用”()"包围起来,并且多个元素用空格分隔
2.2传输数组
向函数传入数组的值:
如果将数组变量作为函数参数,函数只会取数组变量的第一个值
#!/bin/bash
test1() {
##函数内通过$@能获取到调用函数时后面跟的所有参数,加上()可在函数内组成新的数组
newarr=($@)
##对函数内组成的新数组处理后,按照元素列表格式输出,在函数题外调用函数的表达式外加上()再组成新的数组
echo "函数内的数组的元素列表为: ${newarr[@]}"
}
###main###
##调用函数时后面跟的参数为数组的元素列表表达式
arr=(10 20 30 40 50 )
echo "函数外的数组的元素列表为: " ${arr[@]}
test1 ${arr[@]}
2.3返回数组
从函数返回数组:
#!/bin/bash
##定义函数
array() {
##将调用函数后的所有参数定义为newarr
newarr=($@)
##下标i的范围从0开始,小于参数的个数。下标最大为数组参数个数减1
for ((i=0;i<${#newarr[@]};i++))
do
newarr[$i]=$[${newarr[$i]} * 2]
##将原有数组的值乘2
done
##将处理过的值进行输出
echo ${newarr[@]}
}
###main###
read -p "输入一个数组:" num
##将调用函数后输出的值定义为一个新数组arr,设置新的数组时要在数组外加上括号成为新数组
arr=($(array $num))
echo "新数组的值为${arr[@]}"