美文网首页
shell循环结构

shell循环结构

作者: 郭不戳 | 来源:发表于2022-09-22 07:11 被阅读0次

    for循环

    语法结构及其特点

    特点

    遍历/列表式循环
    根据变量的不同取值,重复执行命令序列

    语法结构

    for循环语法结构

    for循环的执行流程

    for循环的执行流程

    for循环相关案例

    案例1:批量添加用户账户(名称无规律)

    代码实现

    #!/bin/bash
    ulist = $(cat /root/users.txt)
    for uname in $ulist
    do
        useradd $uname
        echo "123456" | passwd --stdin $uname
    done
    

    事先创建/root/users.txt存储想要创建的用户名

    案例2:测试主机连通性

    需求: 测试192.168.2.0网段主机的连通性
    代码实现

    #!/bin/bash
    x=0
    y=0
    for i in {1..254}
    do
    ping -c 3 -i 0.2 -W 1 192.168.2.$i &> /dev/null
    if [ $? -eq 0 ];then
    echo "192.168.2.$i 通了"
    let x++        //如果通了一台就把变量x+1
    else
    echo "192.168.2.$i 不通"
    let y++        //如果不通了一台就把变量y+1
    fi
    done
    echo "$x台通了,$y台不通"  
    

    while循环

    语法结构及其特点

    特点

    条件式循环
    反复测试条件,只要成立就执行命令序列

    语法结构

    while循环语法结构

    while循环的执行流程

    while循环的执行流程

    while循环相关案例

    案例1:批量添加用户账户(名称有规律)

    代码实现

    #! /bin/bash
    prefix="tuser" ; i=1
    while [ $i -le 5 ]
    do
        useradd ${prefix}$i
        echo "123456" | passwd --stdin ${prefix} &> /dev/null
        let i++     //递增控制,避免死循环
    done
    

    案例2:整数求和

    需求:编写脚本,帮用户进行整数求和,如果用户输入0就结束求和,并输出结果
    代码实现

    #!/bin/bash
    x=0
    while  :   //while循环后面写冒号代表永远正确可以无限循环
    do
    read -p "请输入一个整数求和(0是结束并输出结果):"   n
    [ -z $n ] && continue    //如果n是空值则重新进行循环任务
    [ $n -eq 0 ] && break   //如果n是0则退出循环执行循环后任务
    let x+=n    //不断的将n的值保存在x里
    done
    echo "总和是$x"
    

    循环的控制

    exit 可以终止循环,但脚本也终止
    break 可以终止循环,继续循环后的任务
    continue 可以终止当前循环,继续下一次循环

    相关文章

      网友评论

          本文标题:shell循环结构

          本文链接:https://www.haomeiwen.com/subject/frkiortx.html