退出状态
命令(包括我们编写的脚本和 shell 函数)在它们终止时向系统发出一个值,称为 退出状态. 该值是 0 到 255 范围内的整数,表示命令执行成功或失败。 按照惯例,零值表示成功,任何其他值表示失败。 shell 提供了一个参数,我们可以使用它来检查退出状态。 在这里,我们看到它在行动:
[我@linuxbox ~]$ ls -d /usr/bin
/ usr / bin
[我@linuxbox ~]$ 回声 $?
0
[我@linuxbox ~]$ ls -d /bin/usr
ls: 无法访问 /bin/usr: 没有那个文件或目录 [me@linuxbox ~]$ 回声 $?
2
[我@linuxbox ~]$ ls -d /usr/bin
/ usr / bin
[我@linuxbox ~]$ 回声 $?
0
[我@linuxbox ~]$ ls -d /bin/usr
ls: 无法访问 /bin/usr: 没有那个文件或目录 [me@linuxbox ~]$ 回声 $?
2
退出状态
在这个例子中,我们执行 ls 命令两次。 第一次,命令成功执行。 如果我们显示参数的值 $?,我们看到它为零。 我们执行 ls 命令第二次(指定一个不存在的目录),产生一个错误,并检查参数 $? 再次。 这次它包含一个2,表示命令遇到错误。 一些命令使用不同的退出状态值来提供错误诊断,而许多命令在失败时仅以值 XNUMX 退出。 手册页通常包括一个标题为“退出状态”的部分,描述使用的代码。 但是,零始终表示成功。
shell 提供了两个极其简单的内置命令,除了以零或一个退出状态终止之外什么都不做。 这 true 命令总是成功执行,并且 false 命令总是执行不成功:
[我@linuxbox ~]$ true [我@linuxbox ~]$ 回声 $? 0
[我@linuxbox ~]$ false [我@linuxbox ~]$ 回声 $? 1
[我@linuxbox ~]$ true [我@linuxbox ~]$ 回声 $? 0
[我@linuxbox ~]$ false [我@linuxbox ~]$ 回声 $? 1
我们可以使用这些命令来查看 if 声明有效。 什么 if 语句真正做的是评估命令的成功或失败:
[我@linuxbox ~]$ 如果是真的; 然后回声“这是真的。”; 菲
这是真的。
[我@linuxbox ~]$ 如果是假的; 然后回声“这是真的。”; 菲
[我@linuxbox ~]$
[我@linuxbox ~]$ 如果是真的; 然后回声“这是真的。”; 菲
这是真的。
[我@linuxbox ~]$ 如果是假的; 然后回声“这是真的。”; 菲
[我@linuxbox ~]$
命令 回声“是真的。” 在以下命令时执行 if 执行成功,后面的命令不执行 if 执行不成功。 如果命令列表如下 if,评估列表中的最后一个命令:
[me@linuxbox ~]$ 如果为假; 真的; 然后回声“这是真的。”; fi 是真的。
[me@linuxbox ~]$ 如果为真; 错误的; 然后回声“这是真的。”; fi [me@linuxbox ~]$
[me@linuxbox ~]$ 如果为假; 真的; 然后回声“这是真的。”; fi 是真的。
[me@linuxbox ~]$ 如果为真; 错误的; 然后回声“这是真的。”; fi [me@linuxbox ~]$