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

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

poj3750约瑟夫环,循环队列

Description 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。 Input 第一行输入小孩的人数N(N<=64) 接下来每行输入一个小孩的名字(人名不超过15个字符) 最后一行输入W,S (W < N),用

javascript中break与continue的区别

在javascript中,break是结束整个循环,break下面的语句不再执行了 for(let i=1;i<=5;i++){if(i===3){break}document.write(i) } 上面的代码中,当i=1时,执行打印输出语句,当i=2时,执行打印输出语句,当i=3时,遇到break了,整个循环就结束了。 执行结果是12 continue语句是停止当前循环,返回从头开始。

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品