shell 循环数组_Linux Shell编程及自动化运维实现 第4章 数组和函数

一.数组

数组简介

变量:用一个固定的字符串,代替一个不固定字符串。

数组:用一个固定的字符串,代替多个不固定字符串。

类型

普通数组:只能使用整数作为数组索引

关联数组:可以使用字符串作为数组索引

终极图示

图示

ea960efddc3af64a3587512a7de47403.png

总结

变量切片有个索引的概念。一个索引(整数)对应一个字符。

普通数组:中的索引对应一个字符串。

关联数组:数组中的索引可以使用字符串。

1、普通数组

方法一

方法一: 一次赋一个值

数组名[下标]=变量值

86cf39c76586bd64c6f07756525094d7.png

方法2 一次赋多个值

ab8107d97828fe64ea0824ed1513c428.png

array3=(`cat /etc/passwd`) 希望是将该文件中的每一个行作为一个元数赋值给数组array3

772dc2a66dbbd94902da64d47f8389ba.png

访问数组元素:

访问数组元数:

# echo ${array1[0]} 访问数组中的第一个元数

# echo ${array1[@]} 访问数组中所有元数 等同于 echo ${array1[*]}

# echo ${#array1[@]} 统计数组元素的个数

# echo ${!array2[@]} 获取数组元素的索引

# echo ${array1[@]:1} 从数组下标1开始

# echo ${array1[@]:1:2} 从数组下标1开始,访问两个元素

2、关联数组

定义关联数组:

切记

先声明关联数组

方法一

方法一: 一次赋一个值

数组名[索引]=变量值

cfd9ac090b8d24923851eb1a3a78bfc9.png

方法二

方法二: 一次赋多个值

4d21ec115368507f22ce8c5e8f4eee5d.png

访问数组元素:

# echo ${ass_array2[index2]} 访问数组中的第二个元数

# echo ${ass[@]} 访问数组中所有元数 等同于 echo ${array1[*]}

# echo ${#ass[@]} 获得数组元数的个数

# echo ${!ass[@]} 获得数组元数的索引

数组和循环

1:通过循环定义和显示数组

2:通过数组统计数据

案例1:while脚本快速定义数组

cb54adae991c0ddadd82fd60d62d3fc0.png

669e8c759e0c37af98458b90b37671b1.png

案例2使用数组统计,用户shell的类型和数量

a1b3187acbbea96caf7e981533ef6599.png

70b971a939783dbc36b187aa30e766ce.png

三.函数

概述

概念

函数是一段完成特定功能的代码片段(块)

在shell中定义了函数,就可以使代码模块化,便于复用代码

注意函数必须先定义才可以使用。

重点

传参 $1,$2

局部变量 local

返回值 return 即$?

1、定义函数

方法一

方法一:

函数名() {

函数要实现的功能代码

}

方法二

方法二:

function 函数名 {

函数要实现的功能代码

}

2.调用函数

语法

函数名

函数名 参数1 参数2

3、示例

需求

编写循环脚本,功能菜单

provide these tools:

show disk info(d)

show mem info(m)

show cpu info(c)

quit(q)

思路

1 编写菜单和判断.

2 添加循环

3 添加函数

bf9d08ae0d634c609595b7668588cce7.png

d3181e36a133a46aa2ba48ef449840a2.png

170e1dd2e2156eae034e1910752d413e.png

示例2:阶乘函数(传参)

需求

制作函数用于阶乘

思路

1 了解阶乘概念

1*2*3*4*5=120

[root@localhost ~]# let aa=1*2*3*4*5;echo $aa

120

2 定义函数

3 引用函数

235965b1ddba161cc3b1e6e970a726d5.png

cc249b278eadcae276276ab7962dc7bc.png

优化1:传参,让函数能够自定义

bd83bbc732ff2c3e61d6c561b9f93e6a.png

01dc35edc86d1c824cea6f58c8abbbb0.png

优化2:传参2,由脚本外部传递参数。

提示

函数传参能够在模块化的命令集中,添加自定义部分。参数应加在调用函数的后面。

shell脚本的参数与函数参数不同。是先将SHELL的参数传给函数,函数本身再转换到内部。

026c3c6a387e026d981b7df0785ef50b.png

1a3f15dc579a3ecc77ef3d6f7a60f6c4.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值