【循环结构 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

相关文章

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁