shell脚本编程-结构化命令3-while、until命令

1、while命令

(1)格式
    while test command; do 
        commands
    done
    while语句中的test command命令和if-then语句的相同。
    指定的test command的命令码随着循环中运行的命令改变,从而更新循环的退出状态。
(2)举例
    $cat test
    #!/bin/bash
    #whiel command test 
    varl=3
    while [ $varl -gt 0 ]; do
        echo $varl
        varl=$[ $varl - 1 ]
    done
    $./test
    3
    2
    1

2、until命令

    格式:
    until test command; do
        commands
    done
    until命令和while命令的工作方式完全相反。
    当test command的状态退出码为0时,循环结束。

3、控制循环

(1)break命令
    跳出单个循环,常用的方式是if-then语句中加入跳出条件;
    在处理多个循环时,break命令会自动处理最内层的循环;
    跳出外部循环,使用break n;n默认为1,当设为2时,跳出2层循环。
(2)contiune命令
    在循环内部设置shell不执行命令的条件;
    命令行参数指定继续多级循环:continue n,其中n定义了循环层数,默认为1。
    #!/bin/bash
    # break and contiune
    val=0
    while [ $val -lt 15 ]; do
        val=$[ $val + 1]
        if [ $val -lt 5 ]; then
            echo "$val is too small"
            continue
        elif [ $val -gt 10 ]; then
            echo "$val is too big"
            break
        fi
    done

4、处理循环的输出

    在循环结构中,可以使用在done后面增加管道命令或者重定向命令处理循环的输出。
    for file in /home/rich/*; do
        if [ -d "$file" ]; then
            echo "$file is a directory"
        elif 
            echo "$file is a file"
        fi
    done > output.txt
    shell脚本会将执行的结果输出到文件中而不是显示在屏幕上。
    同时在循环输出时,可以使用管道命令对执行结果进行处理,如果done | sort 排序等。
    
原文地址:https://www.cnblogs.com/hancq/p/5050141.html