第三章 循环

第三章 循环

常用循环有: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
==========当条件为真时,执行循环体,&表示后台执行============
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值