Linux--Shell编程-case,for,while,until

多分支
    case 变量名/表达式 in
    value1|value2)
        commands1
        ;;
    value3)
        commands2
        ;;
        value4)
        command3
        ;;
    [*)
        defaults commands
        ;;]
    esac


    作用:计算变量名/表达式的值,然后与下面的 value 支匹配,与哪个匹配到(相等),就
       执行其下的commands ,如果所有的都没匹配到,
       有*就执行defaults commands 段
      
if 多分支
        if [ condition1 ]
    then
        commands1
    elif [ condition2 ]
    then
        commands2
    elif [ condition3 ]
    then
        commands3
    elif [ condition4 ]
    then
        commands4
    else
        commands
    fi

    


for 遍历循环
    格式:
    for 变量名 in value1 value2 value3 ... valueN
    do
        commands
    done


   如果遍历值很多可以
    for 变量名 in $(seq 起始值 步长 终值)
    do
        commands
    done    


    作用:变量在 value1 到 valueN 之间遍历,每次取一个值,每取一个值执行一次循环体
      值取完循环也就结束了
  
  
    例:用for 求 1+2+3+...+50

    例:用for 遍历求 /etc/下有多少目录
   
    for i in /etc/*
    do
        
    done


C式for 循环    
    格式:for ((i=0;i<=100;i++))
         do
            commands

         done

while 循环
     格式: while [ condition ]
          do
               commands
          done

    例:n=1
       while [ $n -le 5 ]
       do
        echo -n "*"
            n=$[$n+1]
       done


       打印 *****


        例:打印 1-10 内的偶数

    n=2
    while [ $n -le 10 ]
    do
            echo $n
            n=$[$n+2]
    done


    n=1
    while [ $n -le 10 ]
    do
            if [ $n%2 -eq 0 ]
            then
                    echo $n
            fi
            n=$[$n+1]
    done

       



     例:求 20 内能同时被2和3整除的数之和
             s=0
        n=1
        while [ $n -le 20 ]
        do
                if [[ $n%3 -eq 0 && $n%2 -eq 0 ]]
                then
                        s=$[$s+$n]
                fi
                let n+=1
        done
        echo "s=$s"


until 循环
    格式:
     until [ condition ]
     do

        commands;

     done

    作用:condition 是否成立,不成立,执行循环体,成立里終止。
      
   
    例:打印 1-10 内的偶数
 
        n=1
    until [ $n -gt 10 ]
    

例:通过循环创建三个用户,用户名从键盘输入,密码与用户名相同
   
   改密: echo $user | passwd $user --stdin

 
死循环
    一般来讲死循环是要避免的,但在有些情况下,可能会刻意使用死循环,
    构建死循环:
    while true
    do


         [
         if [ condition ]
        then
            break    --在必要的时候给程序留个出口
        fi
        ]

        [sleep 3]        --在有些情况下,要給程序停止时间
    done


    例:写个程序监控vsftpd 是否正常运行,如果服务器停止了的话,启起来
    while true
    do
            if ! ....
            then
                    service vsftpd start
            fi

            sleep 3
    done

 










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值