Shell脚本 - 数组
定义方法
数组名=(元素1 元素2 元素3 元素4 … 元素n)
注:每个元素都有自己的下标(下标值从0开始定义),并且元素可以是字符串或是数字
- 定义方式1
1.num=(10 20 30 40 50) ---数组名=(各元素)
2.echo ${num[*]} ---输出整个数组内容
- 定义方式2
1.num=([0]=10 [1]=20 [2]=30 [3]=40 [4]=50) ---数组名=([下标值]=元素值)
2.echo ${num[*]} ---输出整个数组内容
- 定义方式3
1.aaa="10 20 30 40 50" ---定义列表=“列表内容(元素值)”
2.num=($aaa) ---数组名=($列表名)
3.echo ${num[*]} ---输出整个数组内容
- 定义方式4
1.num[0]="zhang san" ---数组名[下标值]="元素"
2.num[1]="zhang san" .
3.num[2]="zhang san" .
4.num[3]="zhang san" ---数组名[下标值]="元素"
5.echo ${num[*]} ---输出整个数组内容
数组包括的数据类型
1. 数值型
2. 字符类型(字符串):使用""或’'定义,防止元素当中有空格,元素按空格分割
3. 获取数组长度
echo ${#数组名[*或者@]}
4. 获取数据列表
echo ${数组名[*或者@]}
5. 读取某索引赋值
echo ${数组名[下标值(0开始)]}
6. 数组遍历
7. 数组切片
8. 数组替换
9. 数组删除
10. 数组追加
- 按照索引进行逐个添加

- 按照量大索引值进行向后添加

- 建立新数组

**注:1.双引号不能省略,否则数组中存在包含空格的元素时会按空格将元素拆分成多个**
**2.不能将“@”替换为“*”,如果替换为“*”,不加双引号时与“@”的表现一致,加双引号时,会将数组array_name中的所有元素作为一个元素添加到数组中**
- 老数组+=(新元素)

11. 向函数传递数组参数
- 需求
1. 向函数传递数组
2. 求和
- 命令
```
test1 (){
echo "函数接收到的参数列表为:$@"
newarr=($@)
echo "新数组的值为:${newarr[@]}"
sum=0
for i in ${newarr[@]}
do
sum=$[$sum + $i]
done
echo "数组所有元素的累加值为:$sum"
}
arr=(10 20 30 40 50)
echo "原始数组的值为:${arr[@]}"
test1 ${arr[*]}
```