SEHLL脚本之while循环语句和until循环

while循环常规语法结构:

这个形式的while语法可以用for循环代替,这样更方便。

如上图所示,是while循环的一个示例。

当然在循环语句中也要有一个能改变循环条件真假的存在。即对循环条件的调整,

2.语法--死循环

如上图所示,这里的sleep表示的意思是相隔1秒重复一次循环内容。

每间隔一秒钟显示一次CPU的负载。

虚拟机管理脚本

如上图所示,这就是使用在while true中结合特定的条件使用break语句,实现满足特定条件就跳出循环的操作。

3.语法3(遍历文件内容)

适用于遍历文件中的每一行内容。依次处理命令结果。

如上图所示,line是一个可自定义的变量名称。

这个语法的执行逻辑是首先从文件中取出一行内容,然后交给while循环去执行,

按照回车来区分行,不受空格和空白的影响。

案例:获取所有的系统用户

系统用户的uid在1-999之间,这样的用户就叫做系统用户,而root管理员的uid是0。

如上图所示,就是获取系统用户的shell脚本。

如上图所示,首先将文件/etc/passwd中的每行内容以回车区分行,将每行内容交给while read line 进入while循环,

然后将用户的uid从进入while循环的每一行文件内容中提取出来并进入if条件判断,

当用户的uid大于1并且小于1000的时候,证明这个用户是一个系统用户,

此时去从进入while read line循环的每行文件内容中获取这个系统用户的用户名,

最后使用echo语句打印输出用户名。

案例:将/etc/passwd文件中的每行内容分段存入数据库

如上图所示,安装数据库软件

如上图所示,在test01的数据库中去创建一张用户表,

这个表中保存着

用户名

uid

gid

描述信息

家目录

shell程序

如上图所示,我们在数据库中创建了一个表,接下来的操作,我们需要将用户信息存入到这个表中。

如上图所示,可以在shell终端中执行sql语句:mysql -u用户名 -e "SQL语句"

如上图所示,在数据库中字符性的说明信息我们都需要使用英文引号引起来。

如上图所示,当脚本执行完毕后,在数据库中进行验证。

案例:检测磁盘使用的脚本

如上图所示,while read line不仅可以去遍历文件内容,还可以去依次出来每一行命令的结果。

如上图所示,是使用while line循环去处理文件中的每一行结果。

首先我们将df -hT这个命令的结果交给while read line循环,这就可以去检测系统中所有磁盘的使用空间,并且减少了用户输出的步骤。

我们将磁盘的使用情况和磁盘名分别作为位置变量1和位置变量6交给变量usage ,存储起来。

随后我们将usage变量中磁盘使用率大于百分之20的交给if条件判断,

随后我们使用line变量中的磁盘名称交给dick_name变量

我们将line变量中的磁盘挂载点交给mount_point变量

最后进行打印输出。

案例:通过脚本分别统计一下当前系统中tcp链接处于LISTEN状态有几个,处于ESTABLISHED状态有几个

我们首先去创建两个变量,首先变量a去统计tcp链接处于LISTEN的有几个

其次变量b去统计tcp链接处于ESTABLISHED的有几个

如上图所示,将netstat -antp的命令处理结果,通过grep过滤出所有以tco开头的行,随后将经过挑选的命令结果,交给while read line去进入循环中,

此时再次将进入循环的行数的状态值,交给变量state

随后将变量state 的值交给if条件判断,如果是LISTEN的状态,则相应的变量值加一

如果是ESTABLISHED的状态,则相应的变量值加一

如上图所示,这样的脚本执行效果肯定是不正确的。

如上图所示,当我们直接在while read line 中进行数字处理的时候,数字处理之后的结果在循环之外可能输出不出来,但是在循环里面可以输出,这时我们需要如上图所示,将对while read line输入的数据,做如上处理。

如上图所示,参照文件的方式去写,通过输出重定向将命令的结果传输到while read line中,即命令的结果,可以通过while read line的方式进行遍历。

这种写法就是当你在循环中涉及到对数字的运算,并且这些数字运算的结果,需要到循环外面去输出的时候,就需要使用如上方法向while read line中输入数据。

until循环的语法

相关推荐
一个不知名程序员www1 小时前
算法学习入门---模拟(C++)
c++·算法
搂鱼1145141 小时前
GJOI 11.10 题解
算法
爱睡觉的咋1 小时前
openGauss × AI:打造一个能识图、能讲解、还能推荐的智慧博物馆导览师
算法
视觉AI1 小时前
一帧就能“训练”的目标跟踪算法:通俗理解 KCF 的训练机制
人工智能·算法·目标跟踪
2301_795167202 小时前
玩转Rust高级应用 如何理解 Rust 实现免疫数据竞争的关键是Send 和 Sync 这两个 trait
开发语言·算法·rust
Blossom.1182 小时前
AI Agent记忆系统深度实现:从短期记忆到长期人格的演进
人工智能·python·深度学习·算法·决策树·机器学习·copilot
Q741_1472 小时前
C++ 面试高频考点 链表 迭代 递归 力扣 25. K 个一组翻转链表 每日一题 题解
c++·算法·链表·面试·递归·迭代
_fairyland3 小时前
数据结构 力扣 练习
数据结构·考研·算法·leetcode
Neil今天也要学习3 小时前
永磁同步电机无速度算法--基于三阶LESO的反电动势观测器
算法·1024程序员节
机器学习之心3 小时前
NGO-VMD北方苍鹰算法优化变分模态分解+皮尔逊系数+小波阈值降噪+信号重构,MATLAB代码
算法·matlab·重构·信号重构·ngo-vmd·皮尔逊系数·小波阈值降噪