zoukankan      html  css  js  c++  java
  • shell 循环结构

    前言

    循环结构在编程中十分常见,也是程序中是较为重要的一部分,在bash中有 foruntilwhile 这三种语句可以进行重复执行部分程序流程,下面会进一步讨论这三个指令的使用以及注意事项

    for

    bash中for命令允许用户创建遍历一个系列值的循环,在循环中,建议执行预先设定好的程序或命令。for的基本格式如下:

    for  val in list
    do
        #TODO 
        #commands
    done

    下面写几个简单的脚本熟悉一下for的用法。

    1 从列表中读取

    #!/bin/bash
    for i in A B C D E F G
    do
            echo "i is: $i"
    done

    i is: A
    i is: B
    i is: C
    i is: D
    i is: E
    i is: F
    i is: G

    2 从命令中读取

    #!/bin/bash
    val=`ls -l /`
    for files in $val
    do
            echo "output: $files"
    done

    这里将根目录下的文件列表已经文件属性打印出来,由于默认分隔符号是空格,所以打印的结果如下,由于内容较多,已经省略大部分内容;

    output: 总用量
    output: 108
    output: drwxr-xr-x
    output: 2
    output: root
    output: root
    output: 4096
    output: 6月
    output: 24
    output: 20:53
    output: bin
    output: drwxr-xr-x
    output: 4
    output: root
    output: root
    output: 4096
    output: 8月
    output: 26
    output: 06:28
    output: boot
    output: drwxrwxr-x

    3 自定义分隔符

    使用环境变量IFS可以将分隔符定义为用户想要使用的分隔符;

    #!/bin/bash
    val=`ls -l /`
    
    #将分隔符号换成换行符
    IFS=$'
    '
    for files in $val
    do
            echo "output: $files"
    done

    output: 总用量 108
    output: drwxr-xr-x 2 root root 4096 6月 24 20:53 bin
    output: drwxr-xr-x 4 root root 4096 8月 26 06:28 boot
    output: drwxrwxr-x 2 root root 4096 6月 24 00:07 cdrom
    output: drwxr-xr-x 19 root root 4220 8月 25 20:23 dev

    4 双括号下的for命令

    bash shell 中可以使用C语言风格的for命令;下例简单实现了求1+2+3+…+100的和。

    #!/bin/bash
    sum=0
    for (( i=0; i<=100; i++ ))
    do
            sum=$(( $sum + $i ))
    
    done
    echo $sum

    5050

    while

    bash shell 中的while命令会测试判断当前的cmd是否返回正确值,当前cmd是否成立,如果成立,则执行循环体内的命令,while命令的基本格式如下:

    while test cmd
    do
        #TODO
        #commands
    done

    通过while简单实现1至100的求和公式;

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

    5050

    until

    until命令与while命令恰恰相反,当cmd命令不成立的时候,则执行循环体内部的指令,until命令的基本格式如下:

    until test cmd
    do
        #TODO
        #commands
    done

    通过until简单实现1至100的求和公式;

    #!/bin/bash
    
    i=0
    sum=0
    until [ $i -gt 100 ]
    do
            sum=$(($i+$sum))
            i=$(($i+1))
    done
    echo $sum
    
  • 相关阅读:
    Debate
    图形算法
    OpenGL Notes
    How to Write an Ethics Paper
    Thesis
    addWindowListener -> WindowAdapter -> windowClosing
    Thesis
    Bootcamp: An error occurred while partitioning the disk
    What Is XML Schema
    What Is XML
  • 原文地址:https://www.cnblogs.com/unclemac/p/12783422.html
Copyright © 2011-2022 走看看