zoukankan      html  css  js  c++  java
  • shell编程——循环执行

    我们知道程序无非三种执行方式——顺序、条件、循环。顺序就是一条一条的执行,是一马平川;条件就是个十字路口,根据条件决定自己的走向;循环就是笨驴拉磨,一圈一圈的走,知道达到条件终止。现在集中shell中的循环执行。

    存在两个模式:

    • while do done、 until do done
    • for do done

    while do done、 until do done模式

    基本语法:

    ##while do done 不满足条件时会终止循环
    while [ 条件表达式 ]
    do
        条件满足时可执行的命令
    done
    
    ##until do done 满足条件是会终止循环
    until [ 条件表达式 ]
    do
        条件不满足时可执行的命令
    done

    例子:求1--100之和

    #!bin/bash
    sum=0
    i=1
    while [ "$i" -le "100" ]
    do
        sum=$(($sum + $i))
        i=$(($i+1))
    done
    
    echo "sum(1-100):" $sum
    #!bin/bash
    sum=0
    i=1
    until [ "$i" == "101" ]
    do
        sum=$(($sum + $i))
        i=$(($i + 1))
    done
    
    echo "sum(1-100):" $sum

    这里特别强调一下算式最好用这个模式: var=$(($var + 1))

    for do done 模式

    for((初始值; 条件; 执行步长))
    do
            程序段
    done

    例子:还是1--100之和

    #!bin/bash
    for((i=1; i<=100; i++))
    do
        sum=$(($sum + $i))
        i=$(($i + 1))
    done
    echo "sum(1--100):" $sum

    注意细节:for((初始值; 条件; 执行步长))里面的预压和c语言一样了,但是一点不同双括号。

    更高级点的模式:

    for var in con1 con2 con3
    do
        程序段
    done

    例子:列举出目录下的所有文件名

    #!bin/bash
    read -p "Please enter the dir name:" dirname
    list=`ls $dirname`
    for file in $list
    do
        echo $file
    done

    注意细节:list=`ls $dirname`,其中的引号不是单引号,是键盘1左边的点号(波浪线下面),它可以使程序执行时优先执行。上面的程序还可以精简为:

    #!bin/bash
    read -p "Please enter the dir name:" dirname
    for file in `ls $dirname`
    do
        echo $file
    done
  • 相关阅读:
    【转】Linux 查看CPU信息、机器型号等硬件信息
    荐书
    软件架构的5种视图
    MariaDB 10.4.12 Stable Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. 亲测有效
    配置MariaDB允许远程连接的方法
    MariaDB 10.4.12 Stable 绿色版下载安装
    最完整的Markdown基础教程
    Java开发环境配置 JDK开发环境配置
    centos7 断电导致 generating /run/initramfs/rdsosreport.txt 问题
    高性能分布式锁-redisson
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/2981685.html
Copyright © 2011-2022 走看看