1-5退出状态码

        书接上文,我们来看一下退出状态码,退出状态码在我们的shell脚本中用的也是比较多的,我们会给大家讲一个退出状态码最常用的场景。首先我们来看一下什么是退出状态码。

简介

  • 所有的shell命令都使用退出状态码来告知shell它已经执行完毕。
  • 退出状态码是一个0~255的整数值
  • Linux提供了一个$?来捕获退出状态码的值

        另外,它的退出状态码不同,也代表它的执行结果的不同。我们来看一下退出状态码它有多少?它可能是0~255中的一个整数值。Linux提供了一个$?来捕获退出状态码的值。比如说我们在Linux系统中执行了一些命令,例如ls这样一个命令,这个命令是我们系统已经存在的命令,这个命令执行完之后可以列出当前目录下的文件,这时他成功执行后会返回系统一个0~255之间的整数退出状态码。这时我们通过$?可以获取到上一条命令执行完成之后返回的退出状态码是多少。接下来我们来看退出状态码代表的含义。 

        我们学习shell编程需要了解这些状态吗,但是没必要把这些状态码都背下来。在实际的工作场景中只需要记住两个就行了,0代表上一条命令成功执行,非0的都代表执行不成功。

         接下来给大家演示一下。

        我们首先执行以下命令来列出/etc下的所有文件: 

ls /etc/

        接下来执行:

echo $?

        这样就可以获取到上一条命令ls /etc/执行之后返回的退出状态码。0代表上一条命令执行成功。

        假如我们随便输入一些shell不存在的执行:

        会看到退出状态码会变成127,说明它执行失败。

        对于这个退出状态码我们在哪种情况下可以用到呢?例如:

#!/bin/bash
#

date

if [ $? -eq 0 ];then
        echo "success..."
else
        echo "failed"
fi

        首先简要讲解一下脚本是什么意思,if语句后面会讲到,大家可以先忽略。

        data是我们首先执行的一条命令,我们知道date命令在我们的系统中是实际存在的,可以列出我们系统的时间,下面我们写一个if条件判断,如果中括号中条件满足的话我们就输出success...;不满足就输出failed。大家看中间的条件,大家知道$?是代表上一条date命令执行完之后的退出状态码,表示我们的date命令是否成功执行。-eq是固定写法,是equal(等于)的意思。表示如果退出状态码和0相等的话,代表上一条命令成功执行。

        我们来执行看一下。

sh exitCode.sh 

        可以看到首先把时间列出来然后输出success...

        在看一下另外的一个应用场景

#!/bin/bash
#

ps -ef | grep nginx

if [ $? -eq 0 ];then
        echo "success..."
else
        echo "failed"
fi

        我们先将ps -ef | grep nginx这个命令在shell中执行一下

        大家可以看到我是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 | grep "/usr/sbin/sshd" | grep -v grep

         可以看到是有结果的,说明这个进程是有的。

         这个当我们在脚本中做判断是有用的。好了,退出状态码就讲解到这里。如果各位有补充请留言,我验证之后完善文章。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lvdapiaoliang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值