shell脚本:循环结束语句二

news2024/11/23 19:48:08

shell脚本-循环结束语句二

  • 二、循环结束语句:
    • 1.break:跳出循环。
    • 2.continue:
    • 3.while:
    • 4.until:条件不成立时,跳出循环。
    • 5.总结:
  • 三、操作演练:

二、循环结束语句:

1.break:跳出循环。

(1)作用:控制循环次数,执行后,立即跳出当前循环,不会继续执行后续的代码。

[root@localhost ~]# vim 30.sh
for i in {1..3}
do
 for j in {1..5}
 do
  if [ $j -eq 3 ]
  then
  break 2 #先停内循环,外循环一并终止 
 fi
 echo $j
 done
done
[root@localhost ~]# sh 30.sh
1
2

2.continue:

(1)定义:满足条件,只跳出当前循环,不影响后续。

(2)作用:在循环内部跳过本次循环,并继续下一次循环。

[root@localhost ~]# vim continue.sh
for i in {1..5}
do
 for j in {1..5}
 do
 if [ $j -eq 3 ]
 then
 continue
 fi
 echo $j
 done
done
[root@localhost ~]# sh continue.sh 
1
2
4
5
1
2
4
5
1
2
4
5
1
2
4
5
1
2
4
5

在这里插入图片描述

在这里插入图片描述

#猜数字

con=0
num=$(($RANDOM%100+1))
for ((;;))
do
let con++
read -p "请输入一个数字:" b
 if [ $b -eq $num ]
 then
  echo "bingo,一共猜了${con}次"
  break
 elif [ $b -gt $num ]
 then
  echo "猜大了"
 else
  echo "小了" 
 fi
done

3.while:

(1)定义:重复测试某条件,只要条件成立,反复执行。(适合死循环)

1.用while循环计算【1..10】的和。
[root@localhost ~]# vim while.sh
i=0
sum=0
while [ $i -lt 10 ]
do
let i++
sum=$(($sum+$i))
done
echo $sum
[root@localhost ~]# sh while.sh 
55
2.用while循环批量创建用户并添加密码。
[root@localhost ~]# vim while1.sh
i=0
while [ $i -lt 5 ] 
do
 useradd stu${i}
 echo "123" | passwd --stdin stu${i} &>/dev/null
  if [ $? -eq 0 ]
   then
    echo "用户被创建"
   else
    echo "用户已存在"
fi
let i++
done
[root@localhost ~]# sh while1.sh 
useradd:用户“stu0”已存在
用户被创建
useradd:用户“stu1”已存在
用户被创建
useradd:用户“stu2”已存在
用户被创建
useradd:用户“stu3”已存在
用户被创建
useradd:用户“stu4”已存在
用户被创建

4.until:条件不成立时,跳出循环。

(1)实操:

1.用until计算1-100的和:
[root@localhost ~]# vim 305.sh
sum=0
i=1
until [ $i -gt 100 ]
do
 sum=$[$sum+$i]
 let i++
done
echo $sum
[root@localhost ~]# sh 305.sh 
5050

5.总结:

for while until
(1)for :主要用于已知循环次数
(2)while:条件满足才执行循环,不满足就退出循环,在绝大多数情况,while和for可以通用,while更好用死循环until条件不满足才能循环,满足条件退出,一般不用循环控制语句:
(3)continue:跳出当前的循环,后续条件继续执行
(4)break:跳出当前循环,结束整个循环。多个循环条件,后面可以跟上数字,默认1。2:控制两层,3:控制三层。

三、操作演练:

1.逛淘宝选购商品,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,购买如果不再继续逛的话进行购物车结算总额。

vim 1.sh
sum=0
for ((;;))
do
 for ((;;))
 do
  echo "1.衣服售价500元"
  echo "2.裤子售价400元"
  echo "3.鞋子售价350元"
  echo "4.帽子售价150元"
  echo "5.袜子售价50元"
  read -p "请输入要购买的商品序号:" a
  case $a in
  1)
  echo "衣服已加入购物车,是否继续购买?"
  let sum+=500
  ;;
  2)
  echo "裤子已加入购物车,是否继续购买?"
  let sum+=400
  ;;
  3)
  echo "鞋子已加入购物车,是否继续购买?"
  let sum+=350
  ;;
  4)
  echo "帽子已加入购物车,是否继续购买?"
  let sum+=150
  ;;
  5)
  echo "袜子已加入购物车,是否继续购买?"
  let sum+=50
  ;;
  *)
  echo "欢迎下次光临"
  break
  esac
done
read -p "继续购物还是结算?:" c
if [ $c == y ]
then
continue
elif [ $c == n ]
then
 echo "欢迎下次选购,本次消费共计$sum元"
break
else
 echo "请正确输入"
fi
done
[root@localhost ~]# sh 301.sh 
1.衣服售价500元
2.裤子售价400元
3.鞋子售价350元
4.帽子售价150元
5.袜子售价50元
请输入要购买的商品序号:1
衣服已加入购物车,是否继续购买?
1.衣服售价500元
2.裤子售价400元
3.鞋子售价350元
4.帽子售价150元
5.袜子售价50元
请输入要购买的商品序号:6
欢迎下次光临
继续购物还是结算?:n
欢迎下次选购,本次消费共计500元

2.shell 计算器实现加减乘除和取余。

[root@localhost ~]# vim 302.sh 

#!/bin/bash
read -p "请输入第一个数:" a
read -p "请输入第二个数:" b
read -p "请输入运算符:" c
for ((i=1;i<=5;i++))
do
case $c in
+)
 num1=$[$a+$b]
 echo "$a$c$b=$num1"
;;
-)
 num2=$[$a-$b]
 echo "$a$c$b=$num2"
;;
\*)
 num3=$[$a*$b]
 echo "$a$c$b=$num3"
;;
/)
 num4=$[$a/$b]
 echo "$a$c$b=$num4"
;;
%)
 num5=$[$a%$b]
 echo "$a$c$b=$num5"
;;
esac
break
done
[root@localhost ~]# sh 302.sh 
请输入第一个数:2
请输入第二个数:3
请输入运算符:+
2+3=5

3.打印出某个目录下的所有文件。

[root@localhost ~]# vim 303.sh 

for file in { ls /opt/* }
do
 echo $file
done
[root@localhost ~]# sh 303.sh 
{
ls
/opt/abc.txt
/opt/billkin.txt
/opt/kritt
/opt/kritt.txt
/opt/rh
/opt/wangz
/opt/wangz.txt
}

4.利用 for 循环将多个文本文件内容合并为一个文件。

[root@localhost ~]# vim 304.sh
for i in /root/*.sh
do
 cat "$i" >> fang.txt
done

in { ls /opt/* }
do
echo $file
done
[root@localhost ~]# sh 303.sh
{
ls
/opt/abc.txt
/opt/billkin.txt
/opt/kritt
/opt/kritt.txt
/opt/rh
/opt/wangz
/opt/wangz.txt
}


4.利用 for 循环将多个文本文件内容合并为一个文件。

[root@localhost ~]# vim 304.sh
for i in /root/*.sh
do
cat “$i” >> fang.txt
done


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

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

相关文章

QT CTK插件开发(六) 多对一插件

CTK在软件的开发过程中可以很好的降低复杂性、使用 CTK Plugin Framework 提供统一的框架来进行开发增加了复用性 将同一功能打包可以提供多个应用程序使用避免重复性工作、可以进行版本控制提供了良好的版本更新迭代需求、并且支持动态热拔插 动态更新、开发更加简单快捷 方便…

基于jupyter的逻辑回归练习

文章目录 练习2&#xff1a;逻辑回归介绍1 Logistic回归1.1 数据可视化1.2 实现1.2.1 Sigmoid函数1.2.2 代价函数和梯度1.2.2.1 代价函数1.2.2.2 梯度下降 1.2.3 寻找最优参数1.2.4 评估逻辑回归 2 正则化逻辑回归2.1 数据可视化2.2 特征映射2.3 代价函数和梯度 2.4 寻找最优参…

腾讯云618云服务器优惠活动价格表

2023年腾讯云618年中促销活动已经正式开始了&#xff0c;腾讯云多款云服务都有特惠&#xff0c;下面给大家分享腾讯云618云服务器优惠活动价格表&#xff0c;记得抓住这次上云好时机&#xff01; 目录 一、腾讯云618活动入口 二、轻量应用服务器优惠价格表 三、CVM云服务器优…

【连续介质力学】二阶张量的图像表示

二阶张量在特定方向的投影 法向和切向分量 二阶张量T投影到 n ^ \hat n n^方向的结果是 t ⃗ ( n ^ ) T ⋅ n ^ \vec t^{(\hat n)}T \cdot \hat n t (n^)T⋅n^&#xff0c;其中 t ⃗ ( n ^ ) \vec t^{(\hat n)} t (n^)可以分解成&#xff1a; t ⃗ ( n ^ ) T ⃗ N T ⃗ S…

指针(三)

文章内容 1. 字符指针 2. 数组指针 3. 指针数组 文章内容 1. 字符指针 指针的概念&#xff1a; 1. 指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间。 2. 指针的大小是固定的4/8个字节&#xff08;32位平台/64位平台&#xff09;。 3. 指针…

适配器stack和queue

目录 什么是适配器 模拟实现stack stack的特性 STL中stack的基本框架 接口实现 模拟实现queue queue的特性 STL中queue的框架 什么是适配器 适配器&#xff1a;所谓适配&#xff0c;适配的是容器(vector,list,deque....) 也就是不管是什么容器&#xff0c;都可以套用适…

chatgpt赋能python:Python如何设置输入的SEO

Python如何设置输入的SEO Python是一种高级的编程语言&#xff0c;具有容易上手、可扩展和开源等特点&#xff0c;因此在软件开发过程中得到广泛的应用。然而&#xff0c;如果您想让您的Python项目在搜索引擎上获得更好的排名和流量&#xff0c;您需要考虑如何设置输入的SEO。…

二叉搜索树(Binary Seach Tree)模拟实现

目录 二叉搜索树的性质 二叉搜索树的实现 结点类 接口类(BSTree) 二叉搜索树的插入(insert) 二叉搜索树的查找(find) 二叉搜索树删除(erase) 第二种、删除的结点右子树为空 第三种、删除的结点左子树为空 第四种、删除的结点左右都不为空 实现 二叉搜索树模拟实现代…

基于jupyter的轮廓检测及功能

文章目录 一、实验介绍二、实验步骤三、实验任务任务一&#xff1a;轮廓特征练习一: 找到每个轮廓的方向任务二&#xff1a;边界矩形练习二: 围绕轮廓裁剪图像 总结 一、实验介绍 1. 实验内容 本实验将学习轮廓检测及功能。 2. 实验要点 生成二进制图像来查找轮廓找到并画出…

kotlin函数返回函数

kotlin函数返回函数 https://blog.csdn.net/zhangphil/category_12220817.htmlhttps://blog.csdn.net/zhangphil/category_12220817.html 例1&#xff1a; // func返回匿名函数 fun func(msg: String): (String, Int) -> String {println("func函数 msg:$msg")/…

电能管理系统多功能电力仪表的应用 安科瑞 许敏

摘 要&#xff1a;基于车间用电设备的电能管理系统架构思路及实施方法&#xff0c;从硬件和软件方面对此方法进行了阐述。对车间旧设备改造以及新的电能管理系统提供一种思路和便捷的方法。 关键词&#xff1a;电能管理系统&#xff1b;多功能电力仪表&#xff1b;PLC&#x…

Azure Log Analytics:与Power BI集成

注&#xff1a;本文最初发布于https://d-bi.gitee.io, 2023年6月迁移至CSDN 前述 Azure Log Analytics是Azure Monitor中的一项分析服务。本文将讲述通过Log Analytics与Power BI集成的方式&#xff0c;获取Power BI工作区内的日志信息&#xff0c;包括各PBI数据集的CPU消耗&a…

6/5~6/6总结

创建存储过程 DELIMITER // CREATE PROCEDURE usingid() BEGIN SELECT AVG(id) FROM user; END // DELIMITER ; 要用DELIMITER //指定结束符为 "//", 要调用该存储过程&#xff1a; CAll usingid; 创建成功后在navicat里面的函数界面可以看见刚刚创建的存储过程…

【TCP/IP】IP地址与域名之间的转换 - gethostbyname 和 gethostbyaddr函数

目录 域名系统 DNS服务器 IP地址和域名之间的转换 通过域名获取IP地址 通过IP地址获取域名 域名系统 域名系统&#xff08;英文&#xff1a;Domain Name System&#xff0c;缩写&#xff1a;DNS&#xff09;是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式…

chatgpt赋能python:Python如何竖直输出?

Python如何竖直输出&#xff1f; Python作为一种功能强大的编程语言&#xff0c;在数据分析、人工智能、Web开发等领域得到广泛应用。不过&#xff0c;对于一些初学者或者日常编程较少的开发者来说&#xff0c;可能会遇到一些问题&#xff0c;例如如何竖直输出。 在Python中&…

软件过程与管理——民宿管理系统的项目实践报告(文档+ppt+图表源文件)

目录 一、题目分析与设计 二、评分标准 三、文档目录 四、文档下载 一、题目分析与设计 1、团队组织建设 同学们以3-5人为一组&#xff0c;最多5人一组&#xff0c;每组选择一个具体的软件项目&#xff0c;如现进行的个人毕业设计题目等为主题&#xff0c;要求项目的工作…

量子模拟器中的“弯曲时空”

光子盒研究院出品 当你想解释宇宙尺度的现象时&#xff0c;相对论很有效&#xff1a;比如黑洞碰撞时产生的引力波&#xff1b;量子理论在描述粒子尺度的现象时效果很好&#xff08;比如原子中单个电子的行为&#xff09;。但是&#xff0c;将这两者以一种完全令人满意的方式结合…

【SpinalHDL快速入门】4.6、复合类型之Vec

文章目录 1.1、描述1.2、声明1.2.1、实例 1.3、运算符1.3.1、比较&#xff08;Comparison&#xff09;1.3.2、类型转换&#xff08;Type cast&#xff09;1.3.3、杂项&#xff08;Misc&#xff09;1.3.4、Lib辅助函数&#xff08;Lib helper functions&#xff09; 1.1、描述 …

直播签到功能(互动功能发起端JS-SDK)

功能概述 本功能只支持角色为讲师/嘉宾/助教/管理员的用户进行发起和停止等操作。发起签到时可自定义设置签到时长和签到提示语。 图 / 讲师在直播客户端软件f中操作界面 图 / 学员直播观看页弹出签到界面 代码示例 注意&#xff0c;在开始以下步骤前需要先进行全局初始化设置…

chatgpt赋能python:Python-如何快速高效地求两数之和

Python - 如何快速高效地求两数之和 介绍 Python 是一种高级编程语言&#xff0c;适用于各种领域的软件开发。本文将介绍使用 Python 完成两个数字之和的操作。Python 以其清晰、简洁、易于学习和使用的特性闻名于世&#xff0c;既能作为脚本语言&#xff0c;又能进行面向对象…