1 Star 1 Fork 2

sunnyandgood / BigData

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
命令的退出码.md 2.25 KB
一键复制 编辑 原始数据 按行查看 历史
sunnyandgood 提交于 2018-07-10 10:44 . BigBata

命令的退出码

  • 在 Linux 中每一个命令执行结束都会存在一个退出码:

    • 退出码为 0 时说明命令执行成功,相当与 Java 中的 true。
    • 而命令的退出码为非 0 时,说明命令没有执行成功,相当与 Java 中的 false。
  • 命令的执行是否成功,可以作为分支语句的判断条件:

    • 如果退出码是 0,相当与条件为 true。
    • 如果退出码为非 0,则相当与条件为 false。
  • 脚本中的每一条命令执行后都会返回一个退出码,这个退出码保存在变量$?中,我们可以通过变量$?取得命令的退出码。

  • 例子:执行命令,显示命令执行后的退出码

      # 创建目录 d1
      [root@localhost test]$ mkdir d1
      # 检查创建目录命令的退出码,返回 0 说明命令执行成功
      [root@localhost test]$ echo $?
      0
      # 又创建一次 d1 目录,提示目录已经存在,说明命令没有执行成功
      [root@localhost test]$ mkdir d1
      mkdir: 无法创建目录"d1": 文件已存在
      # 检查命令的退出码,退出码非 0 说明命令没有执行成功
      [root@localhost test]$ echo $?
      1
      # 切换到一个不存在的目录 dd,提示目录不存在,说明命令没有执行成功
      [root@localhost test]$ cd dd
      -bash: cd: dd: 没有那个文件或目录
      # 检查命令退出码,退出码为 1,说明命令没有执行成功
      [root@localhost test]$ echo $?
      1
      # 切换到一个存在的目录,命令执行成功
      [root@localhost test]$ cd d1
      # 检查退出码为 0,说明命令执行成功
      [root@localhost d1]$ echo $?
      0
      # 创建一个空的文本文件,命令执行成功
      [root@localhost d1]$ touch f1
      # 检查命令退出码,看到命令执行成功
      [root@localhost d1]$ echo $?
      0
      [root@localhost d1]$ cp f1 f1_bak
      [root@localhost d1]$ echo $?
      0
      [root@localhost d1]$ rm f1
      [root@localhost d1]$ echo $?
      0
      [root@localhost d1]$ cp f1 f1_bak
      cp: 无法获取"f1" 的文件状态(stat): 没有那个文件或目录
      [root@localhost d1]$ echo $?
      1
Java
1
https://gitee.com/sunnyandgood/BigData.git
git@gitee.com:sunnyandgood/BigData.git
sunnyandgood
BigData
BigData
master

搜索帮助