一、数组
1.1数组简介
变量:用一个固定的字符串,代替一个不固定的字符串
数组:用一个固定的字符串,代替多个不固定的字符串
1.2类型
普通数组:只能使用整数作为数组的索引
关联数组:可以使用字符串作为数组的索引
1.3普通数组
定义数组:
方法一: 一次赋一个值
数组名[下标]=变量值
# array1[0]=pear
# array1[1]=apple
# array1[2]=orange
# array1[3]=peach
查看数组
[root@localhost ~]# declare -a | grep array1
declare -a array1='([0]="pear" [1]="apache" [2]="orange" [3]="peach")'
查看数组
[root@localhost ~]# echo ${array1[@]}
pear apache orange peach
方法二: 一次赋多个值
# array2=(tom jack alice)
# array3=(`cat /etc/passwd`) 希望是将该文件中的每一个行作为 一个元数赋值给数组array3
# array4=(`ls /var/ftp/Shell/for*`)
# array5=(tom jack alice "bash shell")
# colors=($red $blue $green $recolor)
# array6=(1 2 3 4 5 6 7 "linux shell" [20]=saltstack)
访问数组元素:
# echo ${array1[0]} 访问数组中的第一个元数
# echo ${array1[@]} 访问数组中所有元数 等同于 echo ${array1[*]}
# echo ${#array1[@]} 统计数组元素的个数
# echo ${!array2[@]} 获取数组元素的索引
# echo ${array1[@]:1} 从数组下标1开始
# echo ${array1[@]:1:2} 从数组下标1开始,访问两个元素
1.4关联数组
定义关联数组:
先声明关联数组
方法一: 一次赋一个值
数组名[索引]=变量值
# declare -A ass_array1
# ass_array1[index1]=pear
# ass_array1[index2]=apple
# ass_array1[index3]=orange
# ass_array1[index4]=peach
查看
[root@localhost ~]# echo ${ass_array1[@]}
peach pear apple orange
方法二: 一次赋多个值
# declare -A ass_array2
# ass_array2=([index1]=tom [index2]=jack [index3]=alice [index4]='bash shell')
查看数组:
# echo ${ass_array2[index2]} 访问数组中的第二个元数
# echo ${ass_array2[@]} 访问数组中所有元数 等同于 echo ${array1[*]}
# echo ${#ass_array2[@]} 获得数组元数的个数
# echo ${!ass_array2[@]} 获得数组元数的索引
1.5数组和循环
案例一:while脚本快速定义数组
#!/bin/bash
#循环读取文件,定义数组
while read line
do
#hosts:数组名
#[++i]:索引递增,++i是1开始,i++是0开始。
#$line:值,即文件中的内容
hosts[++i]=$line
done < /etc/hosts
#输出索引每一行
for i in ${!hosts[@]}
do
echo "$i : ${hosts[$i]}"
done
案例二:for脚本快速定义数组
[root@localhost ~]# vim for_array.sh
#!/bin/bash
#2020
#for array
for line in `cat /etc/hosts`
do
hosts[++i]=$line
done
for i in ${!hosts[@]}
do
echo "$i: ${hosts[$i]}"
done
二、函数
2.1定义函数
方法一:
函数名() {
函数要实现的功能代码
}
方法二:
function 函数名 {
函数要实现的功能代码
}
2.2调用函数
函数名
函数名 参数1 参数2
案例一:阶乘传参
#!/bin/bash
#定义函数名fun1
fun1() {
#定义阶乘元数
factorial=1
#使阶乘循环
for((i=1;i<=5;i++))
do
#阶乘公式
factorial=$[$factorial*$i]
done
#输出阶乘结果
echo “5的阶乘是:$factorial”
}
fun1
案例二:函数传参 数组传参
#!/bin/bash
#1 先定义一个数组
num=(1 2 3)
#2 定义一个函数
array(){
factorial=1
for i in $* #(重点2)
do
#定义阶层的公式
factorial=$[factorial * $i]
done
echo $factorial
}
#调用函数使用数组(重点1)
array ${num[*]}
案例三:函数结果 赋予数组
————————————————
版权声明:本文为CSDN博主「liuqi66」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuqi66/article/details/111499599
文章评论