zoukankan      html  css  js  c++  java
  • shell while循环与until循环

    while 循环是 Shell 脚本中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环。

    unti 循环和 while 循环恰好相反,当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环,until 的使用场景很少,一般使用 while 即可。


    Shell while 循环的用法如下:

    while循环的用法until循环的用法说明

    while condition
    do
        statements
    done

    1. 在 while 循环体中必须有相应的语句使得 condition 越来越趋近于“不成立”,只有这样才能最终退出循环

    until condition
    do
        statements
    done

    1. 在 until 循环体中必须有相应的语句使得 condition 越来越趋近于“成立”,只有这样才能最终退出循环
    1. condition表示判断条件,statements表示要执行的语句(可以只有一条,也可以有多条)
    2. while中的条件满足时进行循环,until中的条件不满足时进行循环
    举栗脚本结果
    计算从 m 加到 n 的值
    while脚本until脚本
    1. #!/bin/bash
    2. read -p 'input first value: ' m
    3. read -p 'input second value: ' n
    4. if [[ -z $m || -z $n ]]
    5. then echo 'the input should not be empty'
    6. fi
    7. sum=0
    8. while ((m<=n))
    9. do
    10. ((sum+=m))
    11. ((m++))
    12. done
    13. echo 'the sum is: '$sum
    #!/bin/bash
    1. read -p 'input first value: ' m
    2. read -p 'input second value: ' n
    3. if [[ -z $m || -z $n ]]
    4. then echo 'the input should not be empty'
    5. fi
    6. sum=0
    7. until ((m>n))
    8. do
    9. ((sum+=m))
    10. ((m++))
    11. done
    12. echo 'the sum is: '$sum
    1. input first value: 1
    2. input second value: 100
    3. the sum is: 5050
    1. input first value: 7
    2. input second value: 3
    3. the sum is: 0
    1. input first value: 5
    2. input second value: r #r被当做0使用
    3. the sum is: 0
    1. input first value: r #r被当做0使用
    2. input second value: 2
    3. the sum is: 3

    while的判断条件与until的判断条件恰好相反。。

    实现一个简单的加法计算器,用户每行输入一个数字,计算所有数字的和
    1. #!/bin/bash
    2. sum=0
    3. echo "请输入您要计算的数字,按 Ctrl+D 组合键结束读取"
    4. while read n
    5. do
    6. ((sum += n))
    7. done
    8. echo "The sum is: $sum"

    运行结果:

    12↙
    33↙
    454↙
    6767↙
    1↙
    2↙
    The sum is: 7269

    在终端中读取数据,可以等价为在文件中读取数据,按下 Ctrl+D 组合键表示读取到文件流的末尾,此时 read 就会读取失败,得到一个非 0 值的退出状态,从而导致判断条件不成立,结束循环。




  • 相关阅读:
    Windows Server 2012 64bit RMAN异机不完全恢复(迁移)
    dbms_jobs vs. dbms_scheduler_jobs
    Migrating from dbms_job to dbms_scheduler
    ORA-12537: TNS:connection closed
    win7 ins 30131 oracle 12c
    Vector源码分析
    LinkedList源码分析
    ArrayList源码分析
    jsp 显示日期
    Spring data redis 使用 pipelined 批量操作
  • 原文地址:https://www.cnblogs.com/ting152/p/12554357.html
Copyright © 2011-2022 走看看