• 自学Linux Shell12.1-结构化命令if-then


    点击返回 自学Linux命令行与Shell脚本之路

    12.1-结构化命令if-then

    许多程序要求对shell脚本中的命令施加一些逻辑流程控制。有一类命令会根据条件使脚本跳过某些命令。这样的命令通常称为结构化命令(structured command)。

    1. 基本的结构化if-then语句

    结构化命令允许你改变程序执行的顺序。在bash shell中有不少结构化命令,基本的结构化命令就是if-then语句,if-then语句可以有两种格式

    第一种:

    1 if    command
    2 then
    3       commands
    4 fi

    第二种:

    1 if  command;then
    2    commands
    3 fi
    • bash shell的if语句会运行if后面的那个命令。
    • 如果该命令的退出状态码是0 (该命令成功运行),位于then部分的命令就会被执行。
      如果该命令的退出状态码是其他值,then部分的命令就不会被执行,bash shell会继续执行脚本中的下一个命令。
    • then的部分可以不止一条命令,会将这些命令当成一个块
      如果该命令的退出状态码是0 (该命令成功运行),位于then部分的所有命令就会被执行。
      如果该命令的退出状态码是其他值,then部分的所有命令就不会被执行,bash shell会继续执行脚本中的下一个命令。
    • fi语句用来表示if-then 语句到此结束。

    举例1

    举例2

    举例3

     举例4

    if语句行使用grep命令在/etc/passwd文件中查找某个用户名当前是否在系统上使用。如果有用户使用了那个登录名,脚本会显示一些文本信息并列出该用户HOME目录的bash文件。

    但是,如果将testuser变量设置成一个系统上不存在的用户,则什么都不会显示。

    2. if-then-else语句

    1 if  command
    2 then
    3     command
    4 else
    5     command
    6 fi
    • 当if语句中的命令返回零退出状态码时,会执行then部分中的命令
    • 当if语句中的命令返回非零退出状态码时,会执行else部分中的命令
    • else部分可以包含多条命令

    举例1

     

    举例2

    3. 嵌套 if

    • bash shell会依次执行if语句,只有第一个返回退出状态码0的语句中的then部分会被执行
    • elif语句中,紧跟其后的else语句属于elif代码块的
    
    
     1 if  command
     2 then
     3     command
     4 elif command
     5 then
     6     command
     7 elif command
     8 then 
     9     command
    10 else
    11     command     
    12 fi
  • 相关阅读:
    Objective-C 生成器模式 -- 简单实用和说明
    Objective-C 桥接模式 -- 简单实用和说明
    Objective-C 工厂模式(下) -- 抽象工厂模式
    Objective-C 工厂模式(上) -- 简单工厂模式
    Linux篇---Vi的使用
    【Spark篇】---SparkSQL中自定义UDF和UDAF,开窗函数的应用
    【Spark篇】---SparkStreaming算子操作transform和updateStateByKey
    【Spark篇】---SparkStream初始与应用
    【Spark篇】---SparkSQL on Hive的配置和使用
    【Spark篇】---Spark中Shuffle机制,SparkShuffle和SortShuffle
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9209395.html
Copyright © 2020-2023  润新知