接书。 让我们看看结束状态代码。 结束状态代码在我们的shell脚本中也使用得很多。 下面介绍结束状态代码最常用的场景。 首先,让我们看看什么是结束状态代码。
基本信息所有shell命令都使用退出状态码通知shell执行已完成。 结束状态代码为0~255的整数值Linux为$? 捕获结束状态代码的值。 此外,结束状态代码不同表示执行结果的差异。 让我们看看结束状态代码。 有多少? 可能是0到255之间的整数值。 Linux是$? 捕获结束状态代码的值。 例如,我们在Linux系统上执行了一些命令。 例如,像ls这样的命令。 这个命令是我们系统中已经存在的命令,执行这个命令后,可以列出当前目录下的文件。 在这种情况下,他将在成功执行后向系统返回一个0到255之间的整数的结束状态代码。 这个时候我们是$? 可以获取上次命令执行完成后返回的结束状态代码。 接下来,我们来看看结束状态代码的含义。
学习外壳编程需要了解这些状态吗? 但是,没有必要记住所有这些状态代码。 在实际的工作场景中,只需要记住两个就可以了。 0表示上一个命令已成功执行,非零命令表示执行失败。
接下来我给你看看。
首先,运行以下命令以列出/etc下的所有文件:
ls /etc/
然后执行:
echo $?
这样可以获取执行上一个命令ls /etc/后返回的结束状态代码。 0表示上一个命令执行成功。
如果您随意输入不存在shell的执行:
结束状态代码变为127,表示执行失败。
这个结束状态代码可以在什么情况下使用? 例如:
#! /yydhl/bash#dateif [ $? -eq 0 ]; thenecho ' success . ' else echo ' failed ' fi首先简单说明脚本的意思。 if语句将在后面介绍,您可以先忽略它。
data是我们第一个执行的命令。 我知道date命令实际存在于我们的系统中,可以列出我们系统的时间。 以下写入if条件判断。 如果满足大括号内的条件,则输出success . 如果不能满足,则输出failed。 大家看中间的条件,大家看$? 上次date命令执行完成后的结束状态代码指示date命令是否成功执行。 -eq是规定的写法,是equal (等于)的意思。 如果结束状态代码等于0,则表示上一个命令已成功执行。
试着实行一下吧。
shexitCode.sh
您将看到首先列出时间,然后输出success .
让我们看看另一个APP场景
#!/YY DHL/bash # PS-ef|grepnginxif [ $?] -eq 0 ]; thenecho ' success . ' else echo ' failed ' fi首先尝试在shell中运行ps -ef | grep nginx命令
你可以看到我是grep,低于nginx的过程。
我来执行echo $吗? 返回0。
但是,请记住,运行ps -ef | grep nginx命令还会生成包含nginx的子进程。 所以在下面列出来。 所以我们有必要把它去掉。
通过执行:
ps -ef | grep nginx | grep -v grep
这样就可以判断我们的nginx是否存在。 此时不输出任何内容。 还输入echo $吗? 时,结束状态代码返回1。
实现了监视我们的nginx进程是否存在。
再举一个别的例子吧。
例如,在ps -ef | grep sshd中获取系统的sshd服务。
然后执行:
PS-ef '/usr/syydhl/sshd '|grep-v grep
可以看到结果。 这个过程是有的。
这有助于我们用脚本判断。 是的,结束状态代码后就说明到此为止。 如果有补充的话请留言。 验证并完成文章。 非常感谢!