linux从0到1——shell编程7

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)

在Shell编程中,while 语句用于在给定的条件为真时重复执行某一段代码。其语法格式如下:

while [condition]
do
  # commands to be executed as long as the condition is true
done

1. 语法解析

  • while: 表示循环的开始,后面跟一个条件。
  • [condition]: 这是一个条件表达式,可以是任何有效的测试条件,通常使用 [ 和 ] 来表示条件。条件的返回值决定了是否继续循环。Shell 会根据条件的返回码来判断:如果返回值为 0,则条件为真;如果返回值非 0,则条件为假。
  • do: 在条件为真时执行的命令块的开始。
  • done: 结束 while 循环的标志。

2. 示例

基本示例

打印数字 1 到 5:

#!/bin/bash

i=1
while [ $i -le 5 ]
do
  echo $i
  ((i++))  # 递增i
done

输出:

解释:

  • 初始时,变量 i 的值是 1。
  • while 循环检查 i 是否小于等于 5。
  • 如果条件为真,则执行 echo $i 打印出当前的数字,并通过 ((i++)) 将 i 的值递增。
  • 循环继续直到 i 的值大于 5。

另一个示例:读取用户输入

不断读取用户输入直到用户输入 "exit":

#!/bin/bash

while true
do
  echo "请输入一个命令(输入 'exit' 退出):"
  read input
  if [ "$input" == "exit" ]; then
    echo "退出程序。"
    break  # 使用 break 退出循环
  fi
  echo "你输入的命令是:$input"
done

解释:

  • while true 是一个永真条件,意味着循环会一直执行,直到 break 语句触发退出。
  • 每次输入后,通过 read 命令读取用户的输入。
  • 如果输入为 "exit",则通过 break 跳出循环。

3. 常见条件表达式

在 while 语句中,条件通常会用到各种测试条件,最常见的有:

  • 数值比较:
    • -eq 等于
    • -ne 不等于
    • -gt 大于
    • -lt 小于
    • -ge 大于或等于
    • -le 小于或等于

示例:检查数字是否大于 10:
i=5
while [ $i -le 10 ]
do
  echo $i
  ((i++))
done

  • 字符串比较:
    • = 检查两个字符串是否相等
    • != 检查两个字符串是否不相等
    • -z 检查字符串是否为空
    • -n 检查字符串是否非空

示例:检查输入字符串是否为 "yes":
while true
do
  read -p "Do you want to continue? (yes/no): " answer
  if [ "$answer" == "no" ]; then
    echo "退出循环"
    break
  fi
done

4. 结束循环

除了通过条件表达式控制循环结束外,还可以使用以下方法显式地终止循环:

  • break:立即退出循环。
  • continue:跳过本次循环中的剩余部分,进入下一次循环。

5. while 和文件读取

while 循环常用于逐行读取文件内容:

#!/bin/bash

while read line
do
  echo $line
done < input_file.txt

解释:

  • read line 会逐行读取文件 input_file.txt,直到文件结束。
  • 每次读取一行内容并打印。

6. 退出条件

如果不使用 break,循环会根据条件判断继续进行。当条件不满足时,while 循环自然结束。

总结

  • while 循环可以执行重复的任务,直到某个条件变为假。
  • 条件的判断依据是命令的退出状态(0 为真,非 0 为假)。
  • 可以结合数值比较、字符串比较、文件读取等多种方式灵活使用。

while循环代码1

i=1

while (( $i<=10))

do

     ehco $i

               ((i++))

done

首先通过i=1这一行,将变量i初始化为1,为后续的循环操作确定起始值。

循环条件判断:

while((Si<=10))是循环的条件判断部分。这里使用了双括号(())语法,它用于进行算术表达式的计算和判断。在每次循环开始前,都会检查|的值是否小等宇10。只要这个条件满定,循环体内部的代码就会被执行。

循环体执行内容:

在循环体内部,首先通过echo $i这一行,将当前i的值输出到控制台,这样就可以看到循环过程中;的变化情况。

接着,通过((i++))这一语句对变量i进行自增操作。这里的(C))语法同样用手算运算,1++表示将|的值增加1。每次循环结束后、的值就会比上一次循环时增加1,以便在下次循开始时进行新的条件判断。

while循环代码2

i=1

while (( $i<=10 ))

do 

     echo $i

     let "i++"

done

变量初始化与循环条件判断:

这部分和第一种实现方式完全相同。先是通过i=1初始化变量i,然后通过,while((Si<=10))来判断循环是否继续进行克要i的值小等于10,循环就会持续。

循环体执行内容:

同样,在循环体中首先通过 echo Si输出当前i的值。

不同之处在手对变量;进行自增操作的语句。这里使用了let 命令,let “i++"的作用也是将变量i的值增加1。let 命令用于执行算术运算,它可以接受一个或多个算术表达式作为参数,

并对相关变量进行相应的运算操作。

总的来说,这两种实现方式都能达到通过while 循环输出1到10的整数的目的,只是在对变量进行自增操作时使用了不同的语法形式,但它们的功能是等效的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软发布Win11 24H2系统11月可选更新KB5046740!

系统之家11月22日报道&#xff0c;微软针对Win11 24H2系统推出2024年11月最新可选更新补丁KB5046740&#xff0c;更新后系统版本后升至26100.2454&#xff0c;此次更新后修复当应用程序以PDF和XLSX格式导出图表对象时停止响应、无法使用API查找旋转信息等问题。以下小编将给大家…

五天SpringCloud计划——DAY2之使用Docker完成项目的部署

一、引言 刚刚学完了Docker的使用&#xff0c;现在知识在脑子里面还是热乎的&#xff0c;是时候把它总结一下了。 现在的我认为Docker时一个部署项目的工具(不知道是不是真的),相比于我以前使用宝塔面板部署项目&#xff0c;使用Docker更能让我看到代码之美&#xff0c;怎么一…

设计模式之 模板方法模式

模板方法模式是行为型设计模式的一种。它定义了一个算法的骨架&#xff0c;并将某些步骤的实现延迟到子类中。模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。 模板方法模式的核心在于&#xff1a; 封装算法的骨架&#xff1a;通过父类中的模板方…

Softing线上研讨会 | Ethernet-APL:推动数字时代的过程自动化

| &#xff08;免费&#xff09;线上研讨会时间&#xff1a;2024年11月19日 16:00~16:30 / 23:00~23:30 Ethernet-APL以10Mb/s的传输速率为过程工业中的现场设备带来了无缝以太网连接和本质安全电源&#xff0c;这不仅革新了新建工厂&#xff0c;也适用于改造现有工厂。 与现…

Idea修改Commit Changes模式、idea使用git缺少部分Commit Changes

文章目录 一、模式一1、页面效果如下2、如何打开为这种样式&#xff1f; 二、模式二1、页面效果如下2、如何打开为这种样式&#xff1f; 三、总结 前言&#xff1a;Idea中代码提交到git库时的commit Change有两种模式&#xff0c;每种模式的界面及功能都不太一样。 Commit Cha…

东土科技孵化的“网联汽车高速通信技术”前沿产品亮相2024WICV大会

2024世界智能网联汽车大会&#xff08;WICV&#xff09;于近日在北京召开。本次大会发布了由中国汽车工程学会组织全球200余位专家&#xff0c;联合评审遴选出未来十年对于智能网联汽车发展具有重要影响的十大技术趋势&#xff0c;包括“面向高级别自动驾驶的超级人工智能”“网…

使用itextpdf进行pdf模版填充中文文本时部分字不显示问题

在网上找了很多种办法 都解决不了; 最后发现是文本域字体设置出了问题; 在这不展示其他的代码 只展示重要代码; 1 引入扩展包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</v…

HTML5实现剪刀石头布小游戏(附源码)

文章目录 1.设计来源1.1 主界面1.2 皮肤风格1.2 游戏中界面 2.效果和源码源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/143798520 HTM…

自动驾驶之激光雷达

这里写目录标题 1 什么是激光雷达2 激光雷达的关键参数3 激光雷达种类4 自动驾驶感知传感器5 激光雷达感知框架5.1 pointcloud_preprocess5.2 pointcloud_map_based_roi5.3 pointcloud_ground_detection5.4 lidar_detection5.5 lidar_detection_filter5.6 lidar_tracking 1 什么…

pycharm在使用conda虚拟环境时Terminal爆红问题

问题&#xff1a; 解决方法&#xff1a; 复制cmd.exe后面所有路径 添加到pycharm的shell path中&#xff1a;

《Python浪漫的烟花表白特效》

一、背景介绍 烟花象征着浪漫与激情&#xff0c;将它与表白结合在一起&#xff0c;会创造出别具一格的惊喜效果。使用Python的turtle模块&#xff0c;我们可以轻松绘制出动态的烟花特效&#xff0c;再配合文字表白&#xff0c;打造一段专属的浪漫体验。 接下来&#xff0c;让…

二次封装的天气时间日历选择组件

这个接口没调通 没有数据展示~ userStore.badgeDate是VUEX全部存的日历数据 <template><!-- 日历组件 --><el-date-pickerref"elPicker":size"size"v-model"dateTimeValue":type"dateType":range-separator"rang…

当你项目服务器磁盘报警

当你们公司运维收到这样的邮件&#xff0c;大概率日志文件过大引起的 在Linux下如何不停止服务,清空nohup.out文件呢&#xff1f; nohup.out会一直一直自己增长下去&#xff0c;如果你的服务器硬盘不给力的话&#xff0c;很容易把应用也挂掉&#xff08;硬盘没空间 &#xff0…

低速接口项目之串口Uart开发(四)——UART串口实现FPGA内部AXILITE寄存器的读写控制

本节目录 一、设计背景 二、设计思路 三、逻辑设计框架 四、仿真验证 五、上板验证 六、往期文章链接本节内容 一、设计背景 通常&#xff0c;芯片手册或者IP都会提供一系列的用户寄存器以及相关的定义&#xff0c;用于软件开发人员进行控制底层硬件来调试&#xff0c;或封装…

git branch -d 删除分支

Git进行版本控制时&#xff0c;删除分支是常见的操作。特别是当特定的功能开发完成或者分支不再需要时&#xff0c;删除分支可以帮助保持仓库的整洁。删除本地分支和删除远端分支是两个独立的操作。如果需要同时删除本地和远端的分支&#xff0c;需要分别执行以下两个命令。 一…

Linux环境开启MongoDB的安全认证

文章目录 1. MongoDB安全认证简介1.1 访问控制1.2 角色1.3 权限 2. MongoDB中的常见角色3. MongoDB Shell3.1 下载MongoDB Shell3.2 通过MongoDB Shell连接MongoDB 4. 创建管理员用户5. 为具体的数据库创建用户6. 开启权限认证7. 重启MongoDB服务8. 连接MongoDB9. MongoDB数据库…

PVE的优化与温度监控(二)—无法识别移动硬盘S.M.A.R.T信息的思考并解决

前情提要&#xff1a;空闲2.5英寸机械硬盘&#xff0c;直接放到PVE上测试NAS 使用&#xff0c;通过SATA线的方式让小主机不太美观&#xff0c;并且失去了前期调试的安全性。购入移动硬盘盒&#xff0c;缺点&#xff0c;USB 连接&#xff0c;会失去一些特性。比如本文中遇到的问…

嵌入式硬件实战基础篇(二)-稳定输出3.3V的太阳能电池-无限充放电

引言&#xff1a;本内容主要用作于学习巩固嵌入式硬件内容知识&#xff0c;用于想提升下述能力&#xff0c;针对学习稳压芯片和电容以及电池之间的运用&#xff0c;对于硬件PCB以及原理图的练习和前面硬件篇的实际运用&#xff1b;太阳能是一种清洁、可再生的能源&#xff0c;广…

OpenCV相机标定与3D重建(3)校正鱼眼镜头畸变的函数calibrate()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::fisheye::calibrate 函数是 OpenCV 中用于校正鱼眼镜头畸变的一个重要函数。该函数通过一系列棋盘格标定板的图像来计算相机的内参矩阵和畸变…

【过程控制系统】第6章 串级控制系统

目录 6. l 串级控制系统的概念 6.1.2 串级控制系统的组成 6.l.3 串级控制系统的工作过程 6.2 串级控制系统的分析 6.2.1 增强系统的抗干扰能力 6.2.2 改善对象的动态特性 6.2.3 对负荷变化有一定的自适应能力 6.3 串级控制系统的设计 6.3.1 副回路的选择 2.串级系…