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

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

12.1-结构化命令if-then

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

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

结构化命令容许你改变程序执行的顺序。在bash shell中有很多结构化命令,基本的结构化命令就是if-then语句,if-then语句能够有两种格式bash

第一种:spa

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 语句到此结束。

举例1code

举例2
htm

举例3blog

 举例4
get

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

可是,若是将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
相关文章
相关标签/搜索