第三章 循环

devtools/2024/11/14 4:33:52/

第三章 循环

常用循环有:for,while,until,select,其中前三种工作中最常用。

1,for循环语法结构

功能:主要用于固定次数的循环,而不能用于守护进程及无限循环。

#第一种格式:
for 变量名 in  取值列表
do循环体
done#变量名依次获取in后面的变量列表内容,取值表之间用空格分隔,每次只取一个,然后进入循环,执行完所有指令,当执行到done时结束本次循环,依此类推[root@localhost scripts]# cat ping001.sh
#!/bin/bash
for loop in 1 2 3 4 5
doecho "The vlaue is xiaoqian"
done
[root@localhost scripts]# sh ping001.sh
The vlaue is xiaoqian
The vlaue is xiaoqian
The vlaue is xiaoqian
The vlaue is xiaoqian
The vlaue is xiaoqian
#第二种格式:
for 变量名 in  取值列表;do	循环体;done	

2,for循序语法案例实战

image.png

1,实现批量主机ping探测

[root@localhost scripts]# cat ping002.sh
#!/bin/bash
#ping check
>ip.txt         #先清除该文件内容
for i  in {2..254}
do{ip=192.168.88.$i#网段ping -c1 -W1 $ip &> /dev/null#-W超时时间,意思就是等待一秒if [ $? -eq 0 ];thenecho "$ip" | tee -a ip.txt#tee收集结果,-a追加fi} &#{} &中间有空格,后台运行
done
wait
echo "finish"#回显一个结果
[root@localhost scripts]# sh ping2.sh
192.168.88.2
192.168.88.120
finish

2,for循环实现批量用户创建

#!/usr/bin/bash
while : 
do 
read -p "pls enter pre & pass & num [xu 123 1]:" pre pass numprintf "user information
\-----------------
pre:$pre
paswd:$passnumber:$num
\-----------------
"
read -p "are you sure?[yes/no/quit]:" action
if [ "$action" = "yes" ];thenbreak
elif [ "$action" = "quit" ];then exit 0
elsecontinue
fi
done
echo "create user start"
for i in `seq -w $num `
do user=$pre$iid $user &>/dev/nullif [ $? -eq 0 ];thenecho "$user exists"elseuseradd $userecho "$pass" | passwd --stdin $userif [ $? -eq 0 ];then echo "$user is created"fifi
done

3,九九乘法表

[root@localhost script]# vim for1.sh
#!/bin/bash
for ((i=1;i<=9;i++))
dofor ((j=1;j<=i;j++))doecho -ne "$i*$j=$((i*j))\t"done
echo
done

3,while循环

while循环主要用来重复执行一组命令或语句,循环次数既可以固定,也可不固定

while	条件测试
do循环体
done	#对条件进行判断,如果条件成立是,则执行do和done之间的循环体,直到条件不成立时才停止循环

image.png

4,while循环语句案例实战

1,#while循环从1-10输出

[root@localhost script]# vim while1.sh
#!/bin/bash
i=1
while [ $i -le 10 ]
doecho $ilet i++
done

2,#判断用户输入的用户名,如果不是root,则让用户一直输入

#!/bin/bash
read -p "请输入用户名:" User
while [ $User != "root" ]
doread -p "请输入用户名:" User
done

5,Shell的并发控制

1,for循环实现Shell的并发控制

					=========for循环======== 
for条件测试
do循环体
done
==========当条件为真时,执行循环体============

2,for后台循环实现Shell的并发控制

					=========for循环======== 
for条件测试
do{循环体}&
done
==========当条件为真时,执行循环体,&表示后台执行============

http://www.ppmy.cn/devtools/15220.html

相关文章

程序员裁员潮:技术变革下的职业危机探讨及分析

背景 一对来自中国的工程师夫妇在美国洛斯阿图市不幸身亡&#xff0c;疑因谷歌裁员致悲剧发生。这对夫妇在谷歌公司担任高级工程师&#xff0c;他们的离世无疑给公司带来了巨大的损失。同时&#xff0c;这也引起了人们对职场环境的关注&#xff0c;尤其是对于外籍人士在职场中的…

LabVIEW和MES系统的智能化车间数据对接

LabVIEW和MES系统的智能化车间数据对接 随着工业4.0时代的到来&#xff0c;智能制造成为推动制造业高质量发展的重要手段。其中&#xff0c;数字化车间作为智能制造的重要组成部分&#xff0c;其设计与实现至关重要。在数字化车间环境下&#xff0c;如何利用LabVIEW软件与MES系…

新恒盛110kV变电站智能辅助系统综合监控平台+道巡检机器人

江苏晋控装备新恒盛化工有限公司是晋能控股装备制造集团有限公司绝对控股的化工企业&#xff0c;公司位于江苏省新沂市。新恒盛公司40•60搬迁项目在江苏省新沂市经济开发区化工产业集聚区苏化片区建设&#xff0c;总投资为56.64亿元&#xff0c;该项目是晋能控股装备制造集团重…

学习Docker笔记

在23号刚刚学完新版本的docker还想说回去继续学习老版本的springcloud课程里面的docker 结果一看黑马首页新版本课程出了&#xff0c;绷不住了。以下是我学习新版本docker的笔记&#xff0c;记录了我学习过程遇到的各种bug和解决&#xff0c;也参考了黑马老师的笔记&#xff1a…

(C++) 内类生成智能指针shared_from_this介绍

文章目录 &#x1f601;介绍&#x1f914;类外操作&#x1f605;错误操作&#x1f602;正确操作 &#x1f914;类内操作&#x1f62e;std::enable_shared_from_this<>&#x1f62e;奇异递归模板 CRTP&#xff08;Curiously Recurring Template Pattern&#xff09;&#…

响应工具类

响应工具类 public class DataResult {/*** 请求响应code&#xff0c;0为成功 其他为失败*/private int code;/*** 响应异常码详细信息*/private String msg;/*** 需要返回的数据*/ private Object data;private boolean success false;public DataResult(int code, Objec…

在protobuf里定义描述rpc方法的类型

service UserServiceRpc //在test.proto中定义 { rpc Login(LoginRequest)returns(LoginResponse); rpc GetFriendLists(GetFriendListRequest)returns(GetFriendListResponse); } test.proto文件生成test.pb.cc protoc test.proto --cpp_out./ 将生成的…

数据结构入门——排序(代码实现)(下)

int GetMidi(int* a, int left, int right) {int mid (left right) / 2;// left mid rightif (a[left] < a[mid]){if (a[mid] < a[right]){return mid;}else if (a[left] > a[right]) // mid是最大值{return left;}else{return right;}}else // a[left] > a[mid…