• BASH shell脚本篇2——条件命令


    这篇文章介绍下BASH shell中的条件相关的命令,包括:if, case, while, until, for, break, continue。之前有介绍过shell的其它基本命令,请参考:BASH shell脚本篇1——基本命令

    1. If语句

    if语句用于在顺序执行语句的流程中执行条件任务。If语句通常用于在Bash脚本中做出决定。它们根据可能设置的条件来决定是否运行一段代码。if语句的语法格式有几种,如下:

    1. # 1. if语句基本格式:
    2. # 注意:观察第一行中使用的空格,在第一行末尾使用分号。两者都必须使
    3. # 用,if条件语句以fi结尾
    4. if [ condition ];
    5. then
    6. statements
    7. fi
    8. # 2. if-else语法格式:
    9. if [ condition ];
    10. then
    11. <if block commands>
    12. else
    13. <else block commands>
    14. fi
    15. # 3. else-if语法格式:
    16. if [ condition ];
    17. then
    18. elif [ condition ];
    19. then
    20. else
    21. fi

    if语句condition中可以包含一些操作符去处理更复杂的场景。以下是一些最常用的操作符:

    操作符描述
    ! EXPRESSION检查EXPRESSION是否为假
    -n STRING检查STRING的长度是否大于零
    -z STRING检查STRING的长度是否为零(即为空)
    STRING1 == STRING2检查STRING1是否等于STRING2
    STRING1 != STRING2检查STRING1是否不等于STRING2
    INTEGER1 -eq INTEGER2检查INTEGER1在数值上是否等于INTEGER2
    INTEGER1 -gt INTEGER2检查INTEGER1在数值上是否大于INTEGER2
    INTEGER1 -lt INTEGER2检查INTEGER1在数值上是否小于INTEGER2
    -d FILE检查FILE是否存在并且它是一个目录
    -e FILE检查FILE是否存在
    -r FILE检查FILE是否存在,并授予读取权限
    -s FILE检查FILE是否存在并且其大小大于零(表示它不为空)
    -w FILE检查FILE是否存在并授予写权限
    -x FILE检查FILE是否存在并授予执行权限

    2. case语句

    Bash case语句是具有许多ELIF元素的IF-THEN-ELSE的最简单形式。使用case语句使bash脚本更具可读性,并且更易于维护。它通常用于简化具有多种不同选择的复杂条件。case语句的语法如下:

    1. case expression in
    2. pattern_1)
    3. statements
    4. ;;
    5. pattern_2)
    6. statements
    7. ;;
    8. pattern_3|pattern_4|pattern_5)
    9. statements
    10. ;;
    11. pattern-n)
    12. statements
    13. ;;
    14. *)
    15. statements
    16. ;;
    17. esac
    18. # 包含语句的模式称为子句,并且必须以双分号(;;)终止
    19. # 星号(*)用作定义默认情况的最终模式。当用作最后一种情况时,它用作默认情况

    首先,case语句扩展表达式并尝试与每个包含的模式匹配。找到匹配项后,将执行所有链接的语句,直到双分号(;;)为止。在第一个匹配项之后,case以最后执行的语句的退出状态终止。
    如果没有匹配的模式,则case的退出状态为零。否则,返回状态是已执行语句的退出状态。
    如果使用默认的星号(*)模式,则在没有匹配模式的情况下将执行它。

    3. for循环

    bash shell脚本也支持for循环以执行重复性任务。它有助于在字符串中的一系列单词或数组中的元素上迭代一组特定的语句。例如,可以多次运行UNIX命令(或任务),也可以仅使用for循环读取和处理命令列表。

    可以通过两种方式在bash脚本上应用for循环。一种方法是for-in,另一种方法是C语言语法。for循环的语法:

    1. # 方法1,list可以包含数字或字符串等,以空格分隔
    2. for variable in list
    3. do
    4. commands
    5. done
    6. # 方法2
    7. for (( expression1; expression2; expression3 ))
    8. do
    9. commands
    10. done

    当bash的三个表达式中没有“开始,条件和增量”循环时,它将变为无限循环。要终止Bash中的无限循环,可以按Ctrl + C

    4. while循环

    while循环可以定义为控制流语句,只要所应用的条件为真,该语句就允许重复执行给定的命令集。例如,可以运行多次echo命令,也可以仅逐行读取文本文件,然后使用Bash中的while循环处理结果。while循环格式:

    1. while [ expressions ];
    2. do
    3. commands;
    4. multiple commands;
    5. done
    6. # expressions可以是单条件或多条件

    5. until循环

    until循环用于根据表达式的布尔结果重复执行一组命令。仅在表达式的值为真之前执行命令集。因此当表达式的计算结果为false时,将迭代执行一组命令。当表达式首次为真时,循环终止。until循环与while循环相似,但是概念相反。until循环的语法格式:

    1. until [ expressions ];
    2. do
    3. command1
    4. command2
    5. . . .
    6. . . .
    7. commandN
    8. done

    6. break和continue

    可以在循环中使用break语句来终止循环。可以在循环中使用continue语句来跳过特定条件下的特定语句。它告诉Bash停止执行循环的特定迭代并处理下一个迭代。

  • 相关阅读:
    seq2seq与end2end的区别
    SpringBoot实例类-@Data
    Git(二)版本控制、发展历史、初始化配置、别名
    敏捷实践指南
    2022长三角产业区块链生态图谱正式发布,复杂美上榜30强!
    使用mindspore提供的docker运行官方示例resnet_thor,训练速度非常慢
    redis的实际使用
    电商API接口——实现数据同步的实时数据封装接口
    成都睿趣科技:抖音卖货需要什么手续费
    ElasticSearch(一)
  • 原文地址:https://blog.csdn.net/W1Z1Q/article/details/133411986