第三章 循环

第三章 循环

常用循环有: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
do
        echo "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 ];then
                echo "$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 num

printf "user information
\-----------------
pre:$pre
paswd:$pass

number:$num
\-----------------
"
read -p "are you sure?[yes/no/quit]:" action
if [ "$action" = "yes" ];then
	break
elif [ "$action" = "quit" ];then 
	exit 0
else
	continue
fi
done
echo "create user start"
for i in `seq -w $num `
do 
	user=$pre$i
	id $user &>/dev/null
	if [ $? -eq 0 ];then
		echo "$user exists"
	else
		useradd $user
		echo "$pass" | passwd --stdin $user
		if [ $? -eq 0 ];then 
			echo "$user is created"
		fi
	fi
done

3,九九乘法表

[root@localhost script]# vim for1.sh
#!/bin/bash
for ((i=1;i<=9;i++))
do
   for ((j=1;j<=i;j++))
   do
        echo -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 ]
do
   echo $i
   let i++
done

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

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

5,Shell的并发控制

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

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

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

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

相关推荐

  1. Liunx shell编程及自动化运维实现--循环

    2024-04-23 10:46:06       54 阅读
  2. Linux

    2024-04-23 10:46:06       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 10:46:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 10:46:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 10:46:06       82 阅读
  4. Python语言-面向对象

    2024-04-23 10:46:06       91 阅读

热门阅读

  1. CentOS 7 二进制方式安装minio单节点 —— 筑梦之路

    2024-04-23 10:46:06       33 阅读
  2. 高频SQL 判断三角形

    2024-04-23 10:46:06       34 阅读
  3. shell--for循环

    2024-04-23 10:46:06       35 阅读
  4. Python flask

    2024-04-23 10:46:06       35 阅读
  5. 【无标题】

    2024-04-23 10:46:06       37 阅读
  6. SQL Server 中的 dbo:正确调用表的方法与实践

    2024-04-23 10:46:06       34 阅读
  7. 图搜索算法详解

    2024-04-23 10:46:06       38 阅读
  8. 深入了解 Spring Boot 的加载过程

    2024-04-23 10:46:06       32 阅读
  9. 面试经典150题——加油站

    2024-04-23 10:46:06       36 阅读
  10. RabbitMQ:消息队列的卓越之选

    2024-04-23 10:46:06       34 阅读
  11. kubernetes中的静态POD

    2024-04-23 10:46:06       43 阅读
  12. kitti2bag,py 报错

    2024-04-23 10:46:06       59 阅读