• shell之流程控制


    一、if语句、while、for循环各种小例题

    1.用户验证

    复制代码
    [root@bogon ~]# cat buer.sh 
    #!/bin/bash
    
    #user='buer'
    #password='1234.com'
    
    read -p 'please your name:' user
    read -p 'password:' passwd
    
    if [ $user = 'buer' -a $passwd = '1234.com' ];then
        echo 'login successful'
    fi
    复制代码

    2.猜年龄

    复制代码
    #!/bin/bash
    
    age=57
    read -p 'num:' num
    
    if [ $num -eq $age ];then
        echo 'you get it'
    elif [ $num -gt $age ];then
        echo 'too big'
    elif [ $num -lt $age ];then
        echo 'too samll'
    fi
    复制代码

    3.查询成绩

    复制代码
    [root@bogon ~]# cat score.sh 
    #!/bin/bash
    
    read -p 'please your score:' score
    
    if [ $score -ge 90 ];then
        echo 'very good!'
    elif [ $score -ge 70 -a $score -lt 90 ];then
        echo 'good!'
    elif [ $score -ge 60 -a $score -lt 70 ];then
        echo 'just like'
    else
        echo 'poor'
    fi
    复制代码

    4.for循环打印1235

    复制代码
    [root@bogon ~]# cat for.sh 
    #!/bin/bash
    
    for i in {1..5}
    do
        if ((i == 4));then
            continue
            #break
        fi
        echo '=======' $i
    done
    复制代码

    脚本4的执行结果:

    [root@bogon ~]# ./for.sh 
    ======= 1
    ======= 2
    ======= 3
    ======= 5

    5.改进版的猜年龄

    复制代码
    [root@bogon ~]# cat oldboy.sh 
    
    oldboy=57
    while :
    do
        read -p 'input your age:' age
        if [ -z $age ];then
            continue
        fi
        if [ $age -eq $oldboy ];then
            echo "bingo"
            break
        elif [ $age -lt $oldboy ];then
            echo "little"
        elif [ $age -gt $oldboy ];then
            echo "big"
        else
            echo "bye"
        fi
    done
    复制代码

    脚本5结果:

    复制代码
    [root@bogon ~]# ./oldboy.sh 
    input your age:45
    too samll
    input your age:65
    too big
    input your age:57
    you get it
    [root@bogon ~]# 
    复制代码

    6.查看文件类型

    复制代码
    [root@bogon ~]# cat aa.sh 
    #!/bin/bash
    
    while :
    do
        read -p 'input your file:' file
        if [ -z $file ];then
            continue
        elif [ $file = 'quit' ];then
            break
        fi
        if [ -b $file ];then
            echo "$file is block file"
        elif [ -d $file ];then
            echo "$file is directory file"
        elif [ -f $file ];then
            echo "$file is regular file"
        else
            echo "$file unkown"
        fi
    done
    复制代码

    脚本6结果:

    [root@bogon ~]# sh aa.sh 
    input your file:/etc    
    /etc is directory file
    input your file:/pm
    /pm unkown
    input your file:quit

    7.打印乘法口诀表

    复制代码
    [root@bogon ~]# cat cheng.sh 
    #!/bin/bash
    
    for ((i=1;i<=9;i++))
    do
        for ((j=1;j<=i;j++))
        do
        echo -n "$i*$j=$[$i*$j]"
        done
        echo
    done
    复制代码

    脚本7结果:

    复制代码
    [root@bogon ~]# ./cheng.sh 
    1*1=1
    2*1=22*2=4
    3*1=33*2=63*3=9
    4*1=44*2=84*3=124*4=16
    5*1=55*2=105*3=155*4=205*5=25
    6*1=66*2=126*3=186*4=246*5=306*6=36
    7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
    8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
    9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
    复制代码

    8.批量创建用户

    复制代码
    [root@bogon ~]# cat add.sh 
    #!/bin/bash
    
    for i in {1..5};
    do
        useradd user$i && echo "user$i create successful"
    done
    复制代码

    脚本8执行结果:

    [root@bogon ~]# sh add.sh 
    user1 create successful
    user2 create successful
    user3 create successful
    user4 create successful
    user5 create successful

    9.批量删除用户

    复制代码
    [root@bogon ~]# cat del.sh 
    #!/bin/bash
    
    for i in {1..5};
    do 
        userdel -r user$i && echo "user$i delete successful"
    done
    复制代码

    脚本9执行结果:

    [root@bogon ~]# sh del.sh 
    user1 delete successful
    user2 delete successful
    user3 delete successful
    user4 delete successful
    user5 delete successful

    10.循环叠加打印数字,并睡眠1s

    复制代码
    [root@bogon ~]# cat conut.sh 
    #!/bin/bash
    
    count=1
    while ((count < 10))
    do
        echo '==========>' $count
        sleep 1
        ((count+=1))
    done
    复制代码

    执行结果:

    复制代码
    [root@bogon ~]# sh conut.sh 
    ==========> 1
    ==========> 2
    ==========> 3
    ==========> 4
    ==========> 5
    ==========> 6
    ==========> 7
    ==========> 8
    ==========> 9
    复制代码

    11.批量ping  ip

    复制代码
    [root@bogon ~]# cat ping.sh 
    #!/bin/bash
    
    for i in {1..100};
    do
        ping -c1 192.168.16.$i &> /dev/null
        if [ $? -eq 0 ];then
            echo "192.168.16.$i OK"
            echo "192.168.16.$i" >> /tmp/ip.txt
        fi
    done
    复制代码

    12.模仿登录用户小工具

    复制代码
    [root@bogon ~]# cat login.sh 
    #!/bin/bash
    
    user='buer'
    passwd='1234.com'
    while $tag
    do
        read -p 'input your name:' name
        read -p 'input your passwd:' pas
        if [[ $name = $user ]] && [[ $pas = $passwd ]];then
            echo 'login successful'
            while $tag
            do
                read -p '>>:' cmd
                if [[ $cmd = 'quit' ]];then
                    tag=false
                else
                    $cmd
                fi
            done
        fi
    done
    复制代码

    执行结果:

    复制代码
    [root@bogon ~]# sh login.sh 
    input your name:buer
    input your passwd:1234.com
    login successful
    >>:ls
    aa.sh         a.txt       del.sh         oldboy.sh  模板  下载
    add.sh         buer.sh   for.sh         ping.sh    视频  音乐
    age.sh         cheng.sh  initial-setup-ks.cfg  score.sh   图片  桌面
    anaconda-ks.cfg  conut.sh  login.sh         公共        文档
    >>:pwd
    /root
    >>:quit
    [root@bogon ~]# 
    复制代码
  • 相关阅读:
    多线程的多核分配问题验证
    C++C#联合调试
    UNITY 手游(安卓)如何使用C/C++代码
    关于C#内存释放的BUG?
    日期转换
    深度剖析目标检测算法YOLOV4
    2. 使用Shell能做什么
    【Jmeter】之进行接口批量压力测试
    MongoDB-ChangeStream使用笔记
    Mongo-BI(bi-connector)配置使用笔记
  • 原文地址:https://www.cnblogs.com/xiaoyonglaing/p/7263894.html
Copyright © 2020-2023  润新知