一、linux中数组的定义
数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。
1,数组的默认规则
- 数组中的每个元素分分隔符一定为空格隔开
- 每个元素都拥有与其对应的下标,第一个对应的下标值为0
2,字符串和字符列表的定义
字符串的定义格式: 变量名= 字符数据
字符串列表的定义格式: 变量名="字符 分隔符 字符............."
3,数组的定义方法
1)方法一
数组名=(value0 value1 value2 ......)
2)方法二
数组名=( [0]=value1 [1]=value2 [2]=value3.........[N-1]=valueN )
3)方法三
1.定义一个字符串列表 :列表名="value1 value2 value3...........valueN"
2.用数组获取字符串列表中的内容: 数组名=($列表名)
4)方法四
数组名[0]=value1
数组名[1]=value2
数组名[2]=value3
数组名[3]=value4
............................
数组名[N-1]=valueN
二、数组的输出,删除和长度统计
1,数组元素输出
1)单元素输出
格式:echo ${数组名[下标]}
2)数组全部元素输出
方式一:echo ${数组名[*]}
方式二:echo ${数组名[@]}
3)条件判断输出方式
该输出方式,当数组存在元素,则输出数组的,如果不存在,则输出我们指定的内容
格式:echo ${数组名:-'选择输出的内容'}
4)数组切片(任意字符起输出任意个数数组元素)
方式一:echo ${数组名[*]:下标:个数}
方式一:echo ${数组名[@]:下标:个数}
2,数组的删除
1)删除单个数组元素
格式: unset 数组名[N] 其中N为存在元素的数组下标
2)删除整个数组
格式: unset 数组名[*] 或 unset 数组名[@]
3,数组的长度
格式:echo ${#数组名[*]}或 echo ${#数组名[@]}
检测数组中是否存在空值
操作方法:
1.定义一个变量获取数组的长度:新变量= ${#数组名[*]}
2.输出依据数组长度的最后一个元素:echo ${数组名[lenth-1]]
3.与数据列表最后一个值进行比较
三、数组的遍历和替换
1,数组的遍历
2,数组元素替换
1)元素临时替换
格式: echo ${数组名[@]/被替换的字符或字段/新的字符或字段}
3)永久替换
四、数组追加元素
1,指定位置添加
与定义数组方法4一样,直接赋予新值覆盖原来的元素
数组名[N]=新value
2,末尾追加元素
格式: 数组名[${#数组名[@]}] =新元素
3,末尾多元素追加
格式:数组名=("${数组名[@]}" value1 value2 ......valueN)
4,直接末尾追加多元素且格式最为简单
格式: 数组名+=(value1 value2 ........valueN)
五、数组在函数的传参
#!/bin/bash
a=0
learn(){
local arr=$@
for i in ${arr[@]}
do
let i*=2
arr[$a]=$i
let a++
done
echo ${arr[@]}
}
############### main ###############
read -p "请输入一个数组:" num
arr=($num)
echo "数组翻倍后为:$(learn ${arr[@]}) "