循环结构、while循环、case、函数及中断控制

本文介绍了Shell脚本中的循环结构,包括for和while循环,详细展示了如何在脚本中应用这些循环进行主机状态检测、用户账号管理等。此外,还讲解了case分支结构用于服务脚本编写,并通过示例展示了如何创建和管理自定义服务。同时,文章也探讨了Shell函数的使用,以及如何通过break和continue实现脚本中断和退出控制。
摘要由CSDN通过智能技术生成

###################################################

shell  脚本编程

 

一、循环结构

让特定代码重复执行

1.for循环

1)特点:循环的次数是固定的!

2)语法结构及特点

for  变量    in   1    2   …

do

    命令

done

 

for    ((i=1;i<10;i++))               /另一种写法

do

  命令

done

###########################

seq  1  5   =   seq  5  =  echo  {1..5}    默认起始位置为1

 

seq  1  2  5  --输出1  3 5 ,中间的2为步长

###########################

3)应用

# 输出3chenguiz             /  `seq 3`     {1..3}

for  i  in  1 2 3

do

echo "chenguiz"

done

###########################

# 快速创建1000个文件

for  i  in  {1..1000}

do

touch /tmp/$i .txt

done

###########################

#读取用户文件,自动创建用户,初始密码为123456

for i in $(cat /root/user.txt)

do

id $i &>/dev/null

if [ $? -ne 0 ];then

        useradd $i

        echo "123456" | passwd --stdin  $i &>/dev/null

        echo "$i 用户创建成功!"

else

        echo "$i 用户已存在" >> /root/user.log

fi

done

###########################

#拼网段,分开导出以便查看

for  i in {113..119}

do

ping -c 2 172.40.55.$i  &>/dev/null

if  [ $? -eq 0 ];then

echo  "172.40.55.$i   is up !"  >>/root/up.log

else

echo  "172.40.55.$i   is down !" >>/root/down.log

fi

done

###########################

 

猴子摘了若干香蕉,吃了一半,多吃了一个。第二天吃了一半,又多吃了一个,以此类推,第九天,剩一个。

 

 

2.while循环

1)特点:不定次数,当判断为真时,一直循环执行;判断为假,则循环结束。

    四循环的缺点:超耗内存,需sleep   0.1

2)结构

while   [ 判断 ]

do

   命令

done

 

while  :        /死循环固定格式   加冒号

do

  命令

done

###########################

3)应用

#循环10

i=1

while [ $i -le 10 ]

do

        echo "你好!"

        i=$[i+1]        let  i++                 /循环10

done

###########################

#无限猜

num=$[RANDOM%100+1]                   /随机数取100的余数(0-99)加1 1-100

i=0            /先定义次数的变量              

while :

do

        read -p "有个随机数,你来猜猜看:"  cai

        let i++                                           /每猜一次加一

        if [ $cai  -eq $num ];then

          echo "恭喜你,猜对了!共猜了$i 次。"

          exit                                            /猜对并退出

        elif [ $cai -gt $num ];then

          echo "猜大了"

        else

          echo "猜小了"

        fi

done

###########################

打印一个9*9乘法表

难点:不换行  echo  -n   “2*1=2”   ;echo  -n   “2*2=4”

         for i  in   `seq  9`              for  j  in   `seq  9`

          echo “$i*$j=$[i*j]”

 

#!/bin/bash

for  i in `seq  9`       

do

for j in  `seq  $i`            /$ij永远小于等于i

do

   echo  -n "$i*$j=$[i*j]   "         /引号最后留个空格以隔开        

done

echo            /里面执行完后换行

done

###########################

 

二、服务脚本设计

1.case分支结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值