第三章 循环

server/2024/11/9 16:34:35/

第三章 循环

常用循环有: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/server/8519.html

相关文章

【氮化镓】GaN HEMT失效物理和可靠性

概述: 本文是一篇关于AlGaN/GaN基高电子迁移率晶体管(HEMTs)的失效物理和可靠性研究的综述文章,发表在2013年10月的《IEEE Transactions on Electron Devices》上。文章由Enrico Zanoni等人撰写,主要关注了影响栅极边缘和肖特基结的失效机制,并探讨了提高这些器件可靠性…

MultiCD工具:创建一个多引导Linux USB驱动器

众所周知&#xff0c;拥有一个可安装多个可用操作系统的 CD 或 USB 驱动器在各种情况下都非常有用。无论是为了快速测试或调试某些内容&#xff0c;还是只是重新安装笔记本电脑或 PC 的操作系统&#xff0c;这都可以为你节省大量时间。 在本文中&#xff0c;将介绍如何使用名为…

leetcode-分割链表

题目 面试题 02.04. 分割链表 提示 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1&#xff1a; 输入&#xff…

Javascript基础

1.数组随机排序 let arr [1, 2, 3, 4, 5, 6, 7, 8, 9] // function result(params) { // for (let i 0; i < params.length; i) { // let randomIndex parseInt(Math.random() * params.length) // //定义完随机数后我们开始把当前数据存起来用于给赋值后的随…

Android 水滴屏、全屏适配

Android 水滴屏、全屏适配 何谓刘海屏&#xff1f;何谓水滴屏&#xff1f; 上述两种屏幕都可以统称为刘海屏&#xff0c;不过对于右侧较小的刘海&#xff0c;业界一般称为水滴屏或美人尖。 目前国内流行的手机厂商主要有&#xff1a;vivo、oppo、华为、小米。各厂商对刘海屏的…

【Linux系统编程】第六弹---权限的概念

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、什么是权限 2、权限的本质 3、Linux中的用户 4、Linux中文件的权限 4.1、文件访问者的分类(角色) 4.2、文件类型和访问权…

【Python】使用Python计算简单数值积分

题外话&#xff0c;Python语言命名的来源&#xff1a;&#xff08;见下图&#xff09;Monty Python巨蟒剧团 1、积分题目&#xff08;3&#xff09; 2、解析解答 3、Python计算代码 import math import scipy.integrate as integrate# 积分区间 # x_min 0.0 # 1 # x_min …

互联网大厂Spring Cloud面试题及参考答案(持续更新)

目录 什么是Spring Cloud Eureka? 如何在Spring Cloud应用中集成Eureka Server? 解释Eureka中的自我保护模式是什么&#x