for与while循环以及exit、continue、break

目录

一、for循环语句

二、While循环

三、双层循环    三层循环

四、exit、continue和break


一、for循环语句

读取不同的变量值,用来逐个执行同一组命令

for循环经常使用在已经知道要进行多少次循环的场景

格式:

for  变量名  in  取值列表
do
    命令序列
done

 示例1: 循环出0到10之间的整数

法一:

#!/bin/bash
for i in {1..10}
  do
    echo $i
  done


 
法二:

#!/bin/bash
for i in $(seq 1 10)
do
  echo $i
done


 

 示例2:求1..10奇数和

#/bin/bash
sum=0
for i in {1..10..2}
do
  sum=$[sum+i]
  let i++
done

echo "10以内的奇数和为:$sum"


示例3:批量创建用户并修改密码

#!/bin/bash
for user in {1..10}
  do
   echo stu${user}|xargs -n1 useradd
   echo "123123"|passwd --stdin stu${user}
  done


示例4:批量改名

#!/bin/bash
cd /data1
for i in *
do
name=`echo $i |cut -d "." -f1`
mv $i ${name}.bak

遍历    迭代    递归

二、While循环

For是遍历的循环

而while循环是判断条件,从而进行指令

Demo用while批量添加用户

Demo2

解:

用let a++等效于exit

Until循环

Demo1:

输出1到10的和:

for循环一般在正常执行的时候是一个进程串行执行的取值列表

多线程并行执行

Wait是为了等待上面的命令执行完了之后,再去执行后面的cat命令,如果没有wait后面的语句是不会等待后台进程的,会造成一些需要有上下文依赖关系的程序执行错误

For循环的分隔符     

IFS    默认是   空格   制表符\t      换行符\n

For循环的三个分割符号

Demo:

像PATH这样的文件里面路径,想要分行输出,是以冒号为分隔符

如何用while循环去读取文件

#line为变量名

综合格式

While read变量名

do

Done

For while  until 都是单层循环

三、双层循环    三层循环

外层循环没执行一次,内层循环都要全部执行完毕后,下一次外层循环才能再执行

把内层循环看做是外层循环的一个命令语句

Exit               退出shell脚本进程exit执行后,后面的语句都不会执行

执行结果:

外部执行一次,内部执行三次

Break              跳出单层循环,break2  跳出2层循环,循环以外的语句,仍然会执行,循环内的break后面的语句仍然会执行

执行结果

外部循环执行5次,内部执行3次

Continue    用于终止某次循环的执行,但不会完全终止整个循环

Demo

制作一个九九乘法表:

外循环表示行

内循环表示列

采用制表符可以很清楚的列出表格

四、exit、continue和break


exit:退出shell脚本进程。Exit执行后,脚本后的语句都不会再执行。

break 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。 这时我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。

continue continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。 可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。

continue和break使用方法:

break:

1、语法 break 将用于以下break语句退出循环:

2、break n 这里n指定的第n个封闭的循环退出。

continue:

1、语法 continue 和break语句一样,一个整数参数可以给continue命令跳过嵌套循环的命令。

2、continue n 这里n指定第n个封闭循环 continue 。
 

Exit(0-255)  退出shell脚本,并且可以返回指定状态码

Break      指的是跳出当前循环体,去执行循环后面的操作

Continue  

在汇编语言中,`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
发出的红包

打赏作者

chiu莓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值