阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

流程控制-while循环

365次阅读
没有评论

共计 3060 个字符,预计需要花费 8 分钟才能阅读完成。

while 在 shell 中也是负责循环的语句,和 for 一样。因为功能一样,很多人在学习和工作中的脚本遇到循环到底该使用 for 还是 while 呢?很多人不知道,就造就了有人一遇到循环就是 for 或者一位的 while。我个人认为可以按照我说的这个思想来使用,既知道循环次数就可以用 for,比如说一天需要循环 24 次;如果不知道代码要循环多少次,那就用 while,比如我们作业中要求写的猜数字,每个人猜对一个数字的次数都是不能固定的,也是未知的。所以这样的循环我就建议大家用 while 了。

一、while 介绍

特点:条件为真就进入循环;条件为假就退出循环,一般应用在未知循环次数的环境。

1.1、while 语法

while [表达式] do command... done while [1 -eq 1 ] 或者 ((1 > 2 )) do command command ... done

案例
使用 for 循环和 while 循环分别循环打印数组 1 -5

案例代码

for循环打印:for ((i=1;i<=5;i++)) do echo $i done while循环打印:# 打印数字 1 -5 #!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: 打印 1 -5 num=1 while [$num -le 5 ] do echo $num let num++ done

备注: 知道循环次数就可以用 for,比如说一天需要循环 24 次;如果不知道代码要循环多少次,那就用 while,比如我们作业中要求写的猜数字,每个人猜对一个数字的次数都是不能固定的,也是未知的。

二、while 与 shell 运算

2.1、比较运算

案例:
循环交互输入一个小写字母,按 Q 退出循环

案例代码

# 按 Q 退出场景 #!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: read -p "请输入一个小写字母, 按 Q 退出:" choose while [$choose != 'Q' ] do echo "你输入的是: $choose" read -p "请输入一个小写字母, 按 Q 退出:" choose done

2.2、逻辑运算

案例:
使用循环语句帮助丈母娘批量选择女婿

案例代码

#!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: # 丈母娘选女婿 分别按照姑娘 20 30 40 进行与或非模拟 #1. 第一个应征者回答 read -p "你有多少钱:" money read -p "你有多少车:" car read -p "你家房子有几套:" house #while [$money -lt 10000]&&[$car -lt 1]&&[$house -lt 2] while [$money -lt 10000 ]||[$car -lt 1 ]||[$house -lt 2 ] do # 应征者不满住条件开始下一次循环 echo "有请下一个" read -p "你有多少钱:" money read -p "你有多少车:" car read -p "你家房子有几套:" house done # 应征者满足条件 echo "乖女婿,你怎么才来啊!女儿给你了"

2.3、文件类型判断

案例:
使用循环判断 /tmp/xxx 目录下的文件,如果不是文件类型的打印字符串 ” 目录 ”

案例代码

文件类型判断 #!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: while [! -f /tmp/xxx] do echo“目录”sleep 1 done

2.4、特殊条件

while 语句中可以使用特殊条件来进行循环:

  • 符号 ”:” 条件代表真,适用与无限循环
  • 字符串“true”条件代表真,适用与无限循环
  • 字符串 “false” 条件代表假

代码展示

特殊符号 : 代表真 #!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: while : do echo haha sleep 1 done true 字符串代表真,和: 类似 #!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: while true do echo haha sleep 1 done false 字符串代表假,在 while 中不会开始循环

三、while 与循环控制语句

3.1、sleep 语句

#!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: 倒计时游戏 #1. 定义初始值 time=9 #2. 循环输出,1 秒一次 while [$time -ge 0 ] do echo -n -e "\b$time" let time-- # 控制循环 1 秒一次 sleep 1 done # 回车 echo

3.2、break

#!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: 输出数字 1 -9,当输出 5 时停止 #1、定义初始值 num=1 while [$num -lt 10 ] do echo $num # 判断当前 num 的值,如果等于 5 就跳出循环 if [$num -eq 5 ] then break fi # 自动累加 let num++ done

3.3、continue

#!/bin/bash # #Author: #Created Time: #Release: #Description: 输出数字 1 -9, 当等于 5 时跳过本次循环,输出 1、2、3、4、6、7、8、9 #1、定义初始值 num=0 while [$num -lt 9 ] do # 自动累加 let num++ # 判断当前 num 的值,如果等于 5 就跳过本次循环 if [$num -eq 5 ] then continue fi # 输出 num 的值 echo $num done

四、while 嵌套其他语句

4.1、while 嵌套 if

#!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: 输出数字 1 -9,当输出 5 时停止 #1、定义初始值 num=1 while [$num -lt 10 ] do echo $num # 判断当前 num 的值,如果等于 5 就跳出循环 if [$num -eq 5 ] then break fi # 自动累加 let num++ done

4.2、while 嵌套 for

#!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: 99 乘法表 A=1 while [$A -lt 10 ] do for ((B=1;B<=$A;B++)) do echo -n -e "$B*$A=$((A*B)) \t" done echo let A++ done

4.3、while 嵌套 while

#!/bin/bash # #Author: www.zutuanxue.com #Created Time: #Release: #Description: 99 乘法表 # 定义 A A=1 while [$A -lt 10 ] do # 定义 B B=1 while [$B -le $A ] do echo -n -e "$B*$A=$((A*B)) \t" let B++ done echo let A++ done

五、学习视频

视频:while 介绍
视频:while 与 shell 运算
视频:while 循环控制
视频: while 嵌套

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-09发表,共计3060字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7805082
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
使用1Panel面板搭建属于你的AI项目环境

使用1Panel面板搭建属于你的AI项目环境

使用 1Panel 面板搭建属于你的 AI 项目环境 在 AI 项目越来越火的今天,很多朋友都想自己动手搭建一...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...