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

相关文章

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

sql语句字段截取方法

《sql语句字段截取方法》在MySQL中,使用SUBSTRING函数可以实现字段截取,下面给大家分享sql语句字段截取方法,感兴趣的朋友一起看看吧... 目录sql语句字段截取sql 截取表中指定字段sql语句字段截取1、在mysql中,使用SUBSTRING函数可以实现字段截取。例如,要截取一个字符串字

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设