十六周四次课 2018.02.07 for循环、while循环、break跳出循环、continue结束本次循环、exit退出整

本文介绍如何使用Shell脚本中的for循环和while循环来执行特定任务,如计算1到100的总和、监控系统负载并在达到阈值时发送警报等。同时探讨了循环控制结构中的continue和break关键字的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20.10 for循环


1-100所有数字的和,可以查看它的执行过程,

把/etc下的所有目录用ls列一下也可以使用这种格式


这里要注意一个地方看下面的例子,



也就是说for循环它会以空格或者回车为分隔符。

20.11while循环

每隔半分钟检查一下系统的负载,当系统的负载大于10的时候就发一份邮件通知。

1.里的:表示死循环的意思。

2.把系统负载附值到load上

拆分就是查看系统负载取第一行,以load average为分隔符取第二段,以点为分隔符,取第一段。

如下图

但是这里的0前面有一个空格,我们要去掉空格可以给这一句如下位置加空格


也可以在后面加一句去掉空格的命令


3.当load大于10的时候发邮件给邮箱。间断时间为30秒一次。

20.12 while循环

(里面有个错误,-0-9应该是0-9)在死循环中需要人为的交互,并且需要判断输入的是否是需要的东西。(如果中文显示乱码那么就改一下

continue表示结束本次循环,继续重新执行一遍上面的语句,也就是说如果你没有输入东西的话,那么它会提示你输入东西,并且重新执行一遍上面的语句。

表示清空数字

break表示跳出这个循环,也就是说如果你输入的不是纯数字那么会从头开始循环,如果是就退出这个循环。

然后我们可以看一下它的执行过程,因为里面有中文所以会比较乱。

20.13 break跳出循环

break是用在循环里的,while和for都可以。

这里比较的是数字最好用-eq,如果是字符就需要用==。

这里循环到3的时候符合条件就不会再循环4和5了,这个跳出了循环。如下图


20.14 continue结束本次循环

也就是说3这一次循环满足了条件然后continue下面的语句就被忽略掉了。效果如下图


20.15 exit退出整个脚本

我们可以执行一下这个脚本看看执行过程。其实我们还可以给exit定义一个退出数值,也就是用$?能看到的那个数字,我们可以在exit后面加一个1。

在汇编语言中,`break` 和 `continue` 通常用于控制程序流程的跳转,而不是通过循环结构直接实现。因为汇编语言底层操作更多依赖于指令而非高级的控制流语句。然而,你可以通过设置标志位、条件转移和循环计数器等手段模拟类似的功能。 1. **对于`break`**: - 使用`for`循环:如果需要在满足特定条件提前退出,可以在循环体内部检查这个条件,然后用`JMP`或`JNZ`(跳过下迭代,如果条件未满足)等指令直接跳出循环。例如: ```assembly for { ; 执行循环体 CMP some_condition, flag_register JZ exit_loop ; 如果条件满足,跳到exit_loop标签 ; ... } exit_loop: ; 跳出循环 JMP loop_end - 使用`while`循环:同样地,在循环体内判断条件,满足则用`JMP`或`JNZ`离开循环: ```assembly start: MOVZX counter, byte [counter_address] ; 初始化计数器 jmp loop_body loop_body: ; 执行循环体 CMP some_condition, flag_register JZ end_loop ; 条件满足,跳转到end_loop ; 增加计数器或处理其他迭代操作 INCR counter JMP start ; 继续循环 end_loop: ; 程序继续向下执行... ``` 2. **对于`continue`**: - 实现起来更为复杂,因为它涉及到跳过当前循环周期而进入下一。由于汇编语言没有内置的“跳过本次迭代”指令,你可能需要借助临变量或状态标记。在`for`或`while`循环里,可以跳过剩余的当前迭代,然后转去下一个循环开始位置: ```assembly for { ; 初始步骤... JMP check_condition ; 直接跳过可能的循环体部分 check_condition: CMP some_condition, flag_register JE continue_loop ; 条件不满足,则继续正常循环 ; ... ; 这里是正常的循环体 jmp end_of_loop } continue_loop: ; 更新计数器或状态标志后,跳回循环开始 JMP start end_of_loop: ; ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值