循环语句for

for循环

循环和遍历的概念

循环(Loop)和遍历(Traversal)是两个在计算机编程中经常使用的概念。

循环是一种重复执行一段代码的结构。通过循环,可以在满足一定条件的情况下,多次执行相同的代码。循环语句通常包括一个循环体(Loop Body)和一个循环条件(Loop Condition),当循环条件满足时,循环体会被执行,否则循环结束。

遍历是指对一组数据结构中的每个元素进行一次访问的过程。在计算机编程中,常常需要对数组、列表、树等数据结构中的每个元素进行遍历,
以便对它们进行操作或者输出。

循环是一种控制流程的结构,用于重复执行一段代码,而遍历是一种数据操作的过程,用于访问并处理数据结构中的每个元素。在某些情况下,循环和遍历可以结合使用,以便在循环中遍历数据结构并对其进行操作。

循环(Loop)是计算机编程中非常重要的一种结构,其主要目的是为了简化代码编写,提高代码的重复利用率,以及提高程序的效率。
以下是使用循环的一些好处

  • 重复执行代码:通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写,减少程序代码量,提高程序的可读性和可维护性
  • 简化程序逻辑:使用循环可以使程序逻辑更加简洁明了,提高程序的可读性和可理解性,降低代码出错的可能性
  • 提高代码的重复利用率:通过将重复的代码封装在循环结构中,可以提高代码的重复利用率,减少代码冗余
  • 提高程序的效率:循环可以让程序自动化地执行重复任务,从而减少人工干预的次数,提高程序的效率和性能

for语句的结构

读取不同的变量值,用来逐个执行同一组命令-------》即遍历

一般格式

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

实验1.1 :
在这里插入图片描述

在这里插入图片描述
实验1.2
在这里插入图片描述
实验1.3
在这里插入图片描述

类c语言格式

for (( 表达式1; 表达式2; 表达式3 ))
do
命令序列
done
#表达式1:定义变量并赋值
#表达式2:决定是否循环/变量的范围
#表达式3:决定循环变量如何改变,决定循环什么时候结束

实验2
在这里插入图片描述
在这里插入图片描述
实验1.4
1累计加到100
在这里插入图片描述

在这里插入图片描述

拓展:for语句死循环:即无法退出循环

  • 简单的一个for死循环表达方式
for ((;;))
do
命令序列
done
#括号里面固定格式

常用转义字符

echo -n 表示不换行输出
echo -e 输出转义字符,将转义后的内容输出到屏幕上 echo -ne
只有加了-e才能执行下面的转义符
常用的转义字符如下:

\b转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;“\b"表示删除前一个字符,”\b\b"表示删除前两个字符。
\c不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。
\n换行,被输出的字符从"\n"处开始另起一行。
\f换行,但是换行后的新行的开头位置连接着上一行的行尾;
\v与\f相同;
\t转以后表示插入tab,即横向制表符;
\r光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
“ \ \ " 双斜杠表示插入" \ "本身;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

实验3.1: -n不换行输出

在这里插入图片描述
在这里插入图片描述

实验3.2:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

for循环嵌套结构

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

在这里插入图片描述
在这里插入图片描述

跳出循环

在循环中使用 break 和 continue 命令时,它们分别有以下作用:

  • break:在循环内部,当执行到 break 命令时,会立即跳出当前的循环停止循环执行,然后继续执行下一条指令。
    可以使用 break 命令来提前终止循环,例如当达到特定条件时或者已经执行了足够的次数。

  • continue:在循环内部,当执行到 continue 命令时,会跳过本次循环剩余的代码,并继续下一次循环
    可以使用 continue 命令来跳过循环中的某些操作,例如在特定条件下跳过一次循环,或者只执行符合条件的循环。

  • 在嵌套循环中,可以在 break 和 continue 命令后面指定数字参数,来指定跳出或跳过多层循环。
    例如,break 2 会跳出终止当前循环和外层循环的迭代,而continue 2会跳过当前循环和两层外层循环的迭代。

  • break和continue命令是控制循环流程重要命令。

continue

表示满足continue条件时跳出循环,但是不影响后续循环执行
它的作用是在循环内部跳过本次循环并继续下一次循环
在这里插入图片描述

在这里插入图片描述

break

在循环内部,当执行到 break 命令时,会立即跳出当前的循环停止循环执行,然后继续执行下一条指令。

在这里插入图片描述
在这里插入图片描述

拓展,在for语句的嵌套结构中continue 2 的意思

  • 设置简单的for语句嵌套结构
    在这里插入图片描述

  • 执行结果
    在这里插入图片描述

  • 原理
    continue默认为continue 1 ,当continue为默认值时,此时只会跳过内循环中的本次循环,后面循环不受影响,外循环也不受影响
    当continue 2 时,此时内循环和外循环均会受到影响,此时continue 2 会跳出本次内循环同时跳出外层循环,从外层循环处满足条件后继续向后执行下一次循环,即在两层循环内部执行

拓展,在for语句的嵌套结构中break 2 的意思

  • 设置简单的for语句嵌套结构

在这里插入图片描述

  • 执行结果
    在这里插入图片描述
  • 原理
    break默认为break 1 ,当break为默认值时,此时只会结束内循环,外循环也不受影响。
    当break 2 时,此时内循环和外循环均会受到影响,此时break 2 会同时终止内循环和外循环。

拓展,exit的作用

遇到exit语句的时候脚本直接结束。

1)系统是有exit命令的,用于退出当前用户的登录状态

2)在shell脚本中,exit语句是用来退出当前脚本的。也就是说在shell脚本中, 只要碰到exit语句,后续的程序就不再执行,而直接退出脚本。
3)在shell脚本中,exit后面加上非0数字,代表返回的值,在默认情况下,即exit后面不根数字,脚本退出后。echo $? 值为0,而exit后面加上数字后,就会返回对应的值,即exit 1 脚本退出后echo $? 的值就为1。
在这里插入图片描述

如何提高脚本的运作效率

在这里插入图片描述

while

重复测试某个条件,只要条件成立则反复执行
while有些情况下可以和for直接替换使用

定义变量值
while 条件测试操作
do
命令序列
变量的迭代方式
done

简单的脚本:输出10遍helloworld

n=10
while(n>0)
doprintf("helloworld")let n--
done

逻辑关系:
在这里插入图片描述

until

重复测试某个条件,只要条件不成立则反复执行,一旦判断条件成立,就终止循环.

until 条件测试操作
do
命令序列
变量的迭代方式
done

简单的until循环:1加到100

#!/bin/bash
i=1
sum=0
until (( i>100 ))
do((sum+= i))((i++))------------#变量的迭代方式
done
echo "This sum is: $sum"

逻辑关系:
在这里插入图片描述
用脚本实现write 用户名 消息内容 来给用户发送消息
在这里插入图片描述

  • 拓展,购物,到一家店里买东西,统计一共花了多少钱,逛了几家店
    在这里插入图片描述
  • 拓展 菲波拉切数(从第三项开始,等于前两项的和)
    要求,写出前10个数
    在这里插入图片描述

在这里插入图片描述

  • 拓展猴子吃香蕉:猴子摘下了n个香蕉,当天吃掉一半多一个,第二天也是吃掉剩下香蕉一半多一个,到了第十天,香蕉只剩下了1个,求n

在这里插入图片描述
在这里插入图片描述

实验

生成随机密码

1对字符串进行分片

  • 得出字符串长度
    在这里插入图片描述
  • 求出a的随机下标

在这里插入图片描述

  • 求出下标对应的数
    在这里插入图片描述
    显示出变量中的具体的值
    在这里插入图片描述
    在这里插入图片描述
  • 追加值
    在这里插入图片描述
    这条命令可以替代num=$num$b
num+=$b
  • 生成8位数的密码
    在这里插入图片描述

在这里插入图片描述

获取指定字符串方法

  • awk

在这里插入图片描述
在这里插入图片描述

  • 字符串下标分片
    在这里插入图片描述
  • %% 和 ## 和 % 和 #
    在这里插入图片描述

while read 循环读取文件里面的内容

  • cat -n 文件名

在这里插入图片描述

  • for
    在这里插入图片描述
  • while read 变量名 重定向
    在这里插入图片描述
  • cat 123.txt | while read d 管道符
    在这里插入图片描述

实验如何将长文件按照固定行数分割为多个子文件(记得备份源文件)

在这里插入图片描述

在这里插入图片描述

  • 查看IFS

在这里插入图片描述

计算从1到100所有整数的和

在这里插入图片描述

提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

在这里插入图片描述

求从1到100所有整数的偶数和、奇数和

在这里插入图片描述

用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码;若该用户不存在,提示用户输入密码,建立用户并设立其密码

在这里插入图片描述
在这里插入图片描述

检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中

在这里插入图片描述

用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警

在这里插入图片描述

使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数

在这里插入图片描述

将一个点分十进制格式的IP地址转换成点分二进制格式

比如 255.255.255.255 --> 11111111.11111111.11111111.11111111
在这里插入图片描述

假设/opt/test/ 目录中有多个重要文件,编写脚本使用 md5sum 命令一次性判别目录中的文件是否有发生过改动

在这里插入图片描述

在这里插入图片描述

输出环境变量PATH的目录所包含的所有可执行文件

在这里插入图片描述

执行命令 mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt,通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部