Shell编程循环语句(for、while、until)

news2024/11/20 20:23:58

目录

一、for 循环

1.用法和特点

2.执行指定次数

3.遍历和迭代

(1)遍历

(2)迭代

4.操作实例

二、 while 循环

1.用法和特点

2.操作实例

三、until 循环

1.用法和特点

2.操作实例


一、for 循环

1.用法和特点

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

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

img编辑

for 变量 in 取值列表 -- 默认取值分割符(空格、制表符、换行符)

do 或 {

命令序列

done 或 }

2.执行指定次数

取值列表(指定取值)

for value in 1 2 3 4 5 //每个取值用空格分开

do

命令序列

done

[root@localhost1 ~]#vim test4.sh
#!/bin/bash
for i in 1 2 3 4
do
  echo $i
done
​
[root@localhost1 ~]#bash test4.sh
1
2
3
4

3.遍历和迭代

迭代和遍历实现的方式不同,但都可以实现循环执行指定范围的所有值

(1)遍历

for value in {1.. 10}

do

命令序列

done

for value in $(seq 1 10)

do

命令序列

done

[root@localhost1 ~]#vim test5.sh
#!/bin/bash
for i in {1..4}   -- 方式1
do
  echo $i
done
​
echo "-------------"
​
for i in $(seq 1 4)  -- 方式2
do
  echo $i
done
​
[root@localhost1 ~]#bash test5.sh
1
2
3
4
-------------  遍历执行效果相同
1
2
3
4

 

指定步长(两种方法位置不一样,用n表示)

for value in {1.. 10..n}

do

命令序列

done

for value in $(seq 1 n 10)

do

命令序列

done

//指定步长,如步长为2可以实现奇偶数
[root@localhost1 ~]#vim test6.sh
#!/bin/bash
for i in {1..10..2}  --起始为奇数
do
  echo $i
done
​
echo "-------------"
​
for i in $(seq 2 2 10)  --起始为偶数
do
  echo $i
done
​
[root@localhost1 ~]#bash test6.sh
1      
3
5
7
9
-------------
2
4
6
8
10

(2)迭代

for ((i=1;i<=10;i++))

do

命令序列

done

//类似c语言的迭代方式,第一个字段定义变量并赋给初始值;第二个字段指定循环范围条件;第三个字段指定迭代规则(类似步长)

[root@localhost1 ~]#vim test7.sh
#!/bin/bash
for ((i=1;i<=10;i++))
do
  echo $i
done
​
[root@localhost1 ~]#bash test7.sh
1
2
3
4
5
6
7
8
9
10

4.操作实例

//批量创建用户并修改密码
[root@localhost1 data]#vim adduser.sh
#!/bin/bash
for user in {1..10}
do
  useradd user${user}
  echo "123456" | passwd --stdin user${user}
done
​
[root@localhost1 data]#bash adduser.sh
更改用户 user1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user4 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user5 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user6 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user7 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user8 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user9 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user10 的密码 。
passwd:所有的身份验证令牌已经成功更新。
​
[root@localhost1 data]#tail /etc/passwd
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1003:1003::/home/user2:/bin/bash
user3:x:1004:1004::/home/user3:/bin/bash
user4:x:1005:1005::/home/user4:/bin/bash
user5:x:1006:1006::/home/user5:/bin/bash
user6:x:1007:1007::/home/user6:/bin/bash
user7:x:1008:1008::/home/user7:/bin/bash
user8:x:1009:1009::/home/user8:/bin/bash
user9:x:1010:1010::/home/user9:/bin/bash
user10:x:1011:1011::/home/user10:/bin/bash

二、 while 循环

1.用法和特点

满足条件就一直循环,一旦不满足条件立刻跳出循环

while循环常在不知道范围的时候使用

基于这个特点 无限循环可以使用 while true

img编辑

while 条件表达式

do

命令序列

done

2.操作实例

//百米赛跑,速率为10m/s
[root@localhost1 data]#vim whiletest.sh
#!/bin/bash
i=0
rate=10
s=0
while [ $i -lt 100 ]
do
  let i+=$rate
  let s++
done
​
echo "您一共用了$s秒!"
​
//一共用了10s
[root@localhost1 data]#bash whiletest.sh
您一共用了10秒!

三、until 循环

1.用法和特点

重复测试某个条件,只要条件不成立则反复执行

img编辑

until 条件表达式

do

命令序列

done

2.操作实例

//使用until循环实现数字累加
[root@localhost1 data]#vim sum.sh
#!/bin/bash
sum=0
i=1
until [ $i -gt 100 ]  --当i不大于100使会一直执行
do
  sum=$[sum + i]  --将每次执行后的i累加到sum
  let i++    --每次执行后i自加
done
  echo $sum
​
[root@localhost1 data]#bash sum.sh
5050

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

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

相关文章

chatgpt赋能python:Python如何去除列表中重复的元素?

Python如何去除列表中重复的元素&#xff1f; 在Python编程中&#xff0c;经常会遇到需要操作列表的情况。而有时候列表中会出现重复的元素&#xff0c;这会给后续的数据处理带来麻烦。那么如何去除列表中重复的元素呢&#xff1f;下面将为大家介绍几种方法。 1. 使用set()函…

Golang每日一练(leetDay0093) 丢失的数字、整数转换英文表示

目录 268. 丢失的数字 Missing Number &#x1f31f; 273. 整数转换英文表示 Integer To English Words &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日…

北邮国院物联网Software Engineering软件工程笔记

主要依照课上ppt的面向考试学习。 pdf文件获取&#xff1a;添加文章末尾微信公众号&#xff1a;灰海宽松&#xff0c;后台回复“软件工程”获取文件。 文章目录 Introductionsoftware typesgood software featureswhat is software engineering?4 layersWhy important?Genera…

Django、数据库----------ORM框架

目录 1.安装第三方模块 2.ORM 1.自己创建数据库 2.django连接数据库 3.django操作表 创建表&#xff1a;在models.py文件中 删除表以及修改表 在表中新增列时&#xff0c;由于已存在列中可能已有数据&#xff0c;所以新增列必须要指定新增列对应的数据 Django开发操作数…

vector 迭代器失效问题

vector 迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构&#xff0c;其底层实际就是一个指针&#xff0c;或者是对指针进行了封装&#xff0c;比如&#xff1a;vector的迭代器就是原生态指针T* 。因此迭代器失效&#xff0c;实际就是迭代器底层对应指针所指向…

总结896

学习目标&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;背诵15篇短文&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化3讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日必复习&#xff08;5分钟&#xff09;…

读改变未来的九大算法笔记09_指尖的精灵

1. 人类很有可能“在未来像过去所做过的一样行事” 2. 计算机科学领域并不仅仅是编程 2.1. 编程知识是计算机科学家所必需的&#xff0c;但它却只是前提 2.2. 要应用并试验算法&#xff0c;计算机科学研究者就需要将算法转换成计算机程序&#xff0c;而每个程序都由Java、C或…

AMC12和高考数学哪个更难?知识点有哪些不同?

AMC12和高考数学哪个更难&#xff1f;知识点有哪些不同&#xff1f;今天小编给大家来详细介绍一下&#xff01; 难度对比 从难度上看&#xff0c;高考数学的计算量更大&#xff0c;并且知识点比AMC10/12超前&#xff0c;需要用到极限和微积分的知识。 反观AMC10/12不需要用到…

LinkedHashMap源码

介绍 LinkedHashMap是HashMap的子类 Key和Value都允许空有序key可重复可覆盖&#xff0c;value可重复非线程安全可用于实现LRU public class LinkedHashMap<K,V>extends HashMap<K,V>implements Map<K,V>LinkedHashMap的原理图&#xff1a; LinkedHashMa…

【Jetpack】Room 中的销毁重建策略 ( 创建临时数据库表 | 拷贝数据库表数据 | 删除旧表 | 临时数据库表重命名 )

文章目录 一、销毁 和 重建策略二、销毁 和 重建策略 核心要点1、创建 Migration 迁移类 - 重点2、配置 Migration 迁移类3、修改数据库版本号4、修改实体类数据类型 三、完整代码示例1、数据库版本 3 代码示例RoomDatabase 数据库类完整代码Student 实体类完整代码执行结果 2、…

chatgpt赋能python:Python编程爱好者必备:如何参加线上比赛

Python编程爱好者必备&#xff1a;如何参加线上比赛 作为一名拥有10年Python编程经验的工程师&#xff0c;我非常喜欢参加线上编程比赛。在这些比赛中&#xff0c;我可以与全球的编程爱好者一起竞技&#xff0c;展现自己编程的优势和挑战自己的能力。在这篇SEO文章中&#xff…

数论与组合数学 期末总结(完结)

数论与组合数学 自然数的基本性质整除最大公约数&#xff08;GCD&#xff09;辗转相除法欧几里得算法 互质 Coprime素数算数基本定理 同余欧拉定理欧拉函数费马小定理威尔逊定理 逆元求逆&#xff1a;欧几里得扩展算法 线性同余方程组 ( a x b m o d m ) (axb\ mod\ m) (axb m…

2023数维杯A题水体污染对流弥散吸附完整论文及所有数值计算模拟代码

大家好呀&#xff0c;从昨天发布赛题一直到现在&#xff0c;总算完成了数维杯A题完整的成品论文。 A题论文37页&#xff0c;一些修改说明提醒7页&#xff0c;正文22页&#xff0c;附录8页 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴…

chatgpt赋能python:Python如何快速取出所有元素?

Python如何快速取出所有元素&#xff1f; 随着Python编程的流行&#xff0c;我们常常需要处理列表、元组和字典等数据结构。在这些数据结构中&#xff0c;最常见的操作是获取所有元素。本文将介绍如何使用Python来快速取出所有元素。 获取列表中所有元素 在Python中&#xf…

简易操作系统:使用Python 做的图形界面 C 做的内核

目录 实验要求 一、文件管理和用户接口 ⑴文件的逻辑结构 ⑵磁盘模拟 ⑶目录结构 ⑷磁盘分配 ⑸磁盘空闲存储空间管理 ⑹用户接口 ⑺屏幕显示 代码部分 python调用c的方法&#xff1a; ​编辑 c语言部分&#xff0c;文件名 Operating_System_C.c python语言部分 运…

2023认证杯数学建模第二阶段C题完整原创论文讲解

大家好呀&#xff0c;从昨天发布赛题一直到现在&#xff0c;总算完成了认证杯二阶段C题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C第二阶段完整论文共64页&#xff0c;一…

越跌越买!192亿大举抄底

虽然本周主流大盘指数表现乏力&#xff0c;但股票ETF市场再现资金逢低“扫货”。 截至6月9日收盘&#xff0c;全市场736只股票ETF&#xff08;统计股票ETF和跨境ETF&#xff09;总份额增长196亿份&#xff0c;净流入资金约192亿元&#xff0c;再现“越跌越买”的趋势。 其中&…

理解原子操作与CAS锁

理解原子操作与CAS锁实现 线程间内存访问同步的问题理解cpu的存储体系结构cpu存储架构cache line了解一下写回策略 write-back多线程运行在cpu的多核之中&#xff0c;数据怎么共享&#xff0c;怎么同步&#xff1f;通过事件串行化通过MESI 原子操作CAS锁 线程间内存访问同步的问…

chatgpt赋能python:如何去除Python列表中的中括号

如何去除Python列表中的中括号 在Python中&#xff0c;列表是一个非常重要的数据类型。它可以存储多个不同类型的元素&#xff0c;并且可以动态地增加或删除元素。但是&#xff0c;有时候我们需要将列表中的元素取出来&#xff0c;而不想要中括号。本文将介绍两种不同的方法来…

.net framework 命令行项目使用 sqlite,DbContext

文章目录 背景描述实际操作环境安装Nuget包安装三者之间的关系ORM解释 项目从零开始创建过程新建项目安装nugetDB first和Code first新建文件注意&#xff0c;DbContext命名运行测试基础增删改查和原生sql操作查增&#xff0c;删&#xff0c;改增改删 sql语句执行sql查询sql执行…