【循环结构 for i in循环】【i++】【shell 循环while语句】【嵌套循环】【循环until语句】【循环控制shift、continue、break exit】

本文主要是介绍【循环结构 for i in循环】【i++】【shell 循环while语句】【嵌套循环】【循环until语句】【循环控制shift、continue、break exit】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

标题shell脚本 迷茫期

在这里插入图片描述

shell脚本 加速执行脚本 一秒执行多个

在这里插入图片描述

shell编程-循环结构 for i in循环

hell循环-for语句
for i in {取值范围} #for是关键字 i是变量名 in是关键字
do #循环体的开始
循环体
done #循环体的结束

实战1:for i in

[root@linux-server script]# vim for.sh
#!/usr/bin/env bash

for i in {1…100} 循环池 从1 打印到100
do
echo $i 打出循环的值
done

i++

区别:
i++=先赋值在运算
++i
=先运算在赋值
参数解释:
默认值 i=1
条件 i<=多少?取决于定义,为用户输入的变量,先条件成立在执行命令
增幅 i++ 执行一次加一
for循环总结
总结
跟小于自己的做比较 一般都是 i++ 用<做比较都是 i++ 一般都会让他超出值 达到极限退出循环 不然会死循环
跟大于自己的做比较 一般 都是 i-- 用>做比较都是 i++ 一般都会让他超出值 达到极限退出循环 不然会死循环
在这里插入图片描述

实战 i++

[root@linux-server script]# vim for1.sh
#!/bin/bash
for (( i=1;i <= 5;i++ )) 先赋值在运算 每次循环i都会+1 所以只会打印5次
do
echo “$i”
done
[root@linux-server script]# chmod +x for1.sh
[root@linux-server script]# ./for1.sh

例子
[root@localhost script]# i=1
[root@localhost script]# h=1
[root@localhost script]# let x=i++
[root@localhost script]# echo $x
1
[root@localhost script]# echo $i
2
[root@localhost script]# let y=++h
[root@localhost script]# echo $y
2
[root@localhost script]# echo $h
2
案例 详解
在这里插入图片描述
在这里插入图片描述

for循环批量创建用户

脚本思路 总结
步骤1;先让用户输入想要创建账号 数量 密码 3个字符串 去 赋予值
步骤2;然后进行循环池 打印用户赋予的数量值
步骤3;进行判断用户是否存在
步骤4;进行if判断 如果 用户存在 怎么样 不存在怎么样

#!/usr/bin/bash
read -p “请设置用户名/数量/密码: " prefix num pass
cat <<-EOF
用户前缀: p r e f i x 用 户 数 量 : prefix 用户数量: prefix:num
用户密码:$pass
EOF
for i in $(seq 1 n u m ) d o u s e r = num) do user= num)douser=prefix$i
id $user &> /dev/null
if [ ? − e q 0 ] ; t h e n e c h o " ? -eq 0 ];then echo " ?eq0];thenecho"user is already exist!”
exit 0
else
useradd $user &> /dev/null
echo $pass | passwd --stdin $user &>/dev/null
fi
done
脚本理解
在这里插入图片描述
参数详解:
seq 打印序列号,只跟数字
seq 命令用于产生从某个数到另外一个数之间的所有整数。

seq命令的原理就不说了,这里说说为什么不能在{ }中使用变量。其实原因写在bash的man手册中:
大意是说,Bash中会最先展开{ }中的内容,这个时候KaTeX parse error: Expected '}', got 'EOF' at end of input: …是i在循环中读取的是‘{1..NUM}’的一个完整的字符串,输出时$NUM会被10替代,就有了’{1…10}'这样的结果。

shell 循环while语句

while 条件 #while关键字,条件和if的条件一样,#while循环当条件为真的时候循环同时会一直循环,也就所说的死循环,为假时不循环
do
循环体
done
#注意:while循环处理文件里面的行比较擅长,不管有没有空格都是一行。

案例:
vim c.sh
#!/usr/bin/bash
i=1
while [ $i -lt 50 ] 会陷入死循环 一直循环
do
echo $i
done

注意观察,#请问如何能够自动终止
#在shell中,let命令用于指定算术运算,即 let expr

i++进行解决死循环

在这里插入图片描述

#while循环批量创建用户:read line

脚本思路
步骤1; while 新循环参数 read line 读取文件的行
步骤2; 先赋值 执行命令 读取行数的哪一个 值
步骤3; 进行判断用户 存在没有,不存在进行创建,非交互修改密码

#通过一个文件批量创建用户:
#背景:写一个脚本,满足以下需求及应用,如一个文件的内容如下,根据文件内容实现批量创建用户,第一列为用户名,第二列为密码
[root@localhost script]# vim user_pass.txt #创建用户和密码文件
user1 qfedu123
user2 qfedu456
user3 qfedu567
user4 qfedu789
user5 qfedu012
脚本如下
#!/usr/bin/bash

[ $UID -ne 0 ] && exit 1
while read line #读取行
do
user=echo $line | awk '{print $1}' 打印 第1列
pass=echo $line | awk '{print $2}' 打印 第1列
id $user &> /dev/null || useradd $user && echo $pass | passwd $user --stdin
done < /opt/test/script/user_pass.txt #导入文件
脚本详解
在这里插入图片描述

嵌套循环,循环里面套循环

#!/usr/bin/bash
for i in {1…100} 一个循环池
do
while [ $i -lt 50 ] 套了一个循环
do
echo $i
#let i++
done
done
在这里插入图片描述

shell循环until语句

until 条件 #当后面的条件表达式为假的时候的才循环,为真的时候就停止了
do
循环体
done

#!/bin/bash
x=1
until [ $x -ge 10 ] 条件为假就一直循环
do
echo $x
x=expr $x + 1
done

x=1
while [ ! $x -ge 10 ]
do
echo $x
x=expr $x + 1 条件为真 停止
done

shell 循环控制shift、continue、break、exit

shift命令
#位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。
在这里插入图片描述
#!/bin/bash
shift
echo “第一个位置参数: $1”
[root@linux-server script]# bash x_shift3.sh 2 3
第一个位置参数: 3

若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等,则需要用shift把所有参数变成$1
#测试 shift 命令(x_shift.sh)
[root@linux-server script]# vim x_shift.sh
#!/bin/bash
until [ $# -eq 0 ]
do
echo “第一个参数为: $1 参数个数为: $#”
shift
done
执行以上程序:
[root@linux-server script]# bash x_shift3.sh 1 2 3 4
结果显示如下:
第一个参数为: 1 参数个数为: 4
第一个参数为: 2 参数个数为: 3
第一个参数为: 3 参数个数为: 2
第一个参数为: 4 参数个数为: 1

从上可知 shift 命令每执行一次,变量的个数($#)减一,而变量值提前一位
在这里插入图片描述
1.break
结束并退出本次循环
脚本测试
在这里插入图片描述
在这里插入图片描述
2.continue
在循环中不执行continue下面的代码,转而进入下一轮循环
在这里插入图片描述
在这里插入图片描述

3.exit
退出脚本
常带一个整数给系统,如 exit 0

在这里插入图片描述

这篇关于【循环结构 for i in循环】【i++】【shell 循环while语句】【嵌套循环】【循环until语句】【循环控制shift、continue、break exit】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/875813

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹