Linux 退出状态码

Linux shell 中运行的每一个命令都使用 退出状态码 来告诉shell命令已运行完毕。退出状态码值 0~255。
Linux 提供了一个专门的变量 $? 来保存上一个执行命令的退出状态码。

zzz@ubuntu:~/my_learning$ echo $?
0
zzz@ubuntu:~/my_learning$ pwd
/home/zzz/my_learning
zzz@ubuntu:~/my_learning$ echo $?
0
zzz@ubuntu:~/my_learning$ pwdsCommand 'pwds' not found, did you mean:command 'pwdx' from deb procps (2:3.3.16-1ubuntu2.3)command 'pwd' from deb coreutils (8.30-3ubuntu2)command 'pads' from deb pads (1.2-12)command 'pods' from deb pmtools (2.2.0-1)Try: sudo apt install <deb name>zzz@ubuntu:~/my_learning$ echo $?
127
zzz@ubuntu:~/my_learning$ 

可以看到,当命令正确执行完毕后,退出状态码是0。如果命令结束时有错误,退出状态码是正值。
一些常见的状态码含义

状态码 描述
0 命令成功结束
1 一般性未知错误
2 不适合的shell命令
126 命令不可执行
127 没找到命令
128 无效的退出参数
128+x 与Linux信号x相关的严重错误
130 通过Ctrl+C终止的命令
255 正常范围之外的退出状态码

指定退出状态码
默认情况下,shell脚本会以脚本的最后一个命令的退出状态码退出。但是,可以使用 exit 命令来指定退出状态码。

zzz@ubuntu:~/my_learning$ vim test.sh
zzz@ubuntu:~/my_learning$ cat test.sh
#!/bin/basha=1
zzz@ubuntu:~/my_learning$ . test.sh
zzz@ubuntu:~/my_learning$ echo $?
0
zzz@ubuntu:~/my_learning$ vim test.sh
zzz@ubuntu:~/my_learning$ cat test.sh
#!/bin/basha=1
exit 10
zzz@ubuntu:~/my_learning$ bash test.sh
zzz@ubuntu:~/my_learning$ echo $?
10
zzz@ubuntu:~/my_learning$
zzz@ubuntu:~/my_learning$ vim test.sh
zzz@ubuntu:~/my_learning$ cat test.sh
#!/bin/basha=1
exit 300
zzz@ubuntu:~/my_learning$ chmod u+x test.sh
zzz@ubuntu:~/my_learning$ ./test.sh
zzz@ubuntu:~/my_learning$ echo $?
44
zzz@ubuntu:~/my_learning$

可以看到,当指定的退出状态码的值超过255的范围时,会被缩减到0~255之间。最终的结果将是指定的值除以256后得到的余数。

Linux 退出状态码相关推荐

  1. bash-shell高级编程--退出和退出状态码

    退出和退出状态码 大家都知道exit是用来退出一个脚本,既可以使用exit来结束一个脚本,像常用的C语言一样,它也会返回一个值,这个值会传递给脚本的父进程,父进程会使用这个值做下一步的处理. 其实在l ...

  2. python状态码及其含义_Shell退出状态码及其应用详解

    Shell 中运行的命令会使用0-255之间的整数值,作为退出状态码,并以此来告知shell该命令执行的状态.通常情况下,约定0代表命令成功结束,非0代表程序非正常退出. 典型退出状态码及其含义 退出 ...

  3. Shell程序退出状态码的命令详解

    在本篇文章当中主要给大家介绍了一些常见的程序退出的状态码!并且给出一下例子帮助大家仔细理解,并且使用C语言和python语言实现获取子进程退出时候的退出状态码. 程序退出状态码 前言 在本篇文章当中主 ...

  4. bash shell中的退出状态码

    shell中运行的每个命令都使用退出状态码告诉shell它已经运行完毕.提出状态码是一个0-255的整数值,在命令结束运行时有命令传给shell.可以捕获这个值并在脚本中使用. Linux提供了一个专 ...

  5. bash之流程控制for循环及bash命令退出和退出状态码

    一.for循环定义: 将一段代码反复执行:----->进入条件;------> 退出条件; 二.语法格式: for 变量名 in LIST do statement1 ... done f ...

  6. Docker 容器退出状态码existed

    今天在起容器的时候,发现容器出于existed状态,状态码为130,查找后发现,自己启动的时候使用了非后台启动.当手动 ctrl+C 退出命令行的时候,容器也就退出了.开始的时候,不知道状态码含义,纠 ...

  7. Docker容器的退出状态码及解决方法

    容器内应用启动异常, 导致容器很快就结束或者构建镜像时失败了等问题 会出现的情况: 容器处于Exited异常退出时,将无法用docker exec进入容器内,会提示该容器不在运行中 docker lo ...

  8. Docker 容器的退出状态码及重启策略

    Docker 容器的退出状态码: 0:表示正常退出 非 0:表示异常退出(退出状态码采用 chroot 标准) 125:Docker 守护进程本身的错误 126:容器启动后,要执行的默认命令无法调用 ...

  9. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)

    1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...

最新文章

  1. RSA签名算法,计算调用加密报文,安全传输
  2. mysql中文乱码问题的解决方案
  3. boost::contract模块实现断言等级的测试程序
  4. win10系统预览体验计划错误代码0x800bfa19怎么办
  5. python batchnorm2d_PyTorch中的BatchNorm2d层
  6. Django基础学习笔记:初识MTV模式
  7. Python Mysql学习总结
  8. iterator adapter reverse_iterator
  9. 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器
  10. C#上位机工作感想2(2020.4.15-2021.7.24)
  11. 如何将DVD的vob视频格式转换成mp4格式
  12. 计算机仿真和vr的区别,扫盲科普:今天才知道VR和AR的区别
  13. 前端录屏工具开发--可用于工程化错误回放
  14. 二维码防伪系统开发-实现了产品信息防伪的高效性
  15. 系统架构设计师论文历年考题(2015-2017)考前冲刺来一波真题
  16. 智能井盖被纳入《城市综合管廊运营服务规范》国标,喜大普奔
  17. oracle sqlnet配置,sqlnet.ora文件配置详解
  18. 《单核工作法图解》阅读摘要
  19. 今年世界杯预测(阿根廷队冠军)
  20. 外行人如何通过学习软件测试转行IT

热门文章

  1. Java手机号码工具类(判断运营商、获取归属地)以及简要的原理跟踪
  2. idea注释模板优化
  3. 计算机主板性能,不同价位的主板性能有差别吗_主板评测-中关村在线
  4. ESP32设备驱动-LIS3DSH加速度传感器驱动
  5. vue九宫格抽奖dom记录
  6. Java—求绝对值最大值
  7. PS制作纸质复古野外露营插画分享
  8. 微信小程序实现原生导航栏和自定义头部导航栏
  9. python:smtplib --- SMTP 协议客户端
  10. C4D场景已经有材质了怎么渲染白膜?