## 命令的退出码 * 在 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