python 程序退出状态码_linux退出状态码及exit命令

Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码。对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用$?变量。它的值会变成由shell所执行的最后一条命令的退出状态码:

[root@host1 test]# date

2017年 07月 19日 星期三 :: CST

[root@host1 test]# echo $?

按照惯例,一个成功结束的命令的退出状态码是0。如果一个命令结束时有错误,退出状态码就是一个正数值(1-255):

[root@host1 test]# qwert

-bash: qwert: command not found

[root@host1 test]# echo $?

无效命令会返回一个退出状态码127。Linux错误退出状态码没有什么标准可循,但有一些可用的参考,如下所示:

Linux退出状态码

状 态 码         描 述

0          命令成功结束

1          一般性未知错误

2          不适合的shell命令

126        命令不可执行

127        没找到命令

128        无效的退出参数

128+x       与Linux信号x相关的严重错误

130        通过Ctrl+C终止的命令

255        正常范围之外的退出状态码

退出状态码126表明用户没有执行命令的正确权限:

[root@host1 test]# ./expect.sh

-bash: ./expect.sh: 权限不够

[root@host1 test]# echo $?

另一个会碰到的常见错误是给某个命令提供了无效参数:

[root@host1 test]# cd %

-bash: cd: %: 没有那个文件或目录

[root@host1 test]# echo $?

这会产生一般性的退出状态码1,表明在命令中发生了未知错误。

默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码退出:

[root@host1 test]# sh test.sh

This is a test file

[root@host1 test]# echo $?

你可以改变这种默认行为,返回自己的退出状态码。exit命令允许你在脚本结束时指定一个退出状态码:

[root@host1 test]# cat test.sh

#!/bin/bash

A=

B=

C=$[$A + $B]

echo the number is $C

exit $C

[root@host1 test]# sh test.sh

the number is

[root@host1 test]# echo $?

这里直接使用了C的值为exit的退出值,也可以直接指定exit 30,这都是对的;但是你要注意这个功能,因为退出状态码最大只能是255。看下面例子中会怎样:

[root@host1 test]# cat test.sh

#!/bin/bash

A=

B=

C=$[$A * $B]

echo the number is $C

exit $C

[root@host1 test]# sh test.sh

the number is

[root@host1 test]# echo $?

退出状态码被缩减到了0~255的区间,shell通过模运算得到这个结果。一个值的模就是被除后的余数。最终的结果是指定的数值除以256后得到的余数。在这个例子中,指定的值是300(返回值),余数是44,因此这个余数就成了最后的状态退出码。

Linux退出状态码

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

shell中的退出状态码

shell中的退出状态码最大只有255,如果超过这个值,就会进行取余运算,即如果执行如下命令: exit exitCode 如果exitCode大于255,那么实际的状态码为exitCode % 25 ...

Perl处理和收走子进程(退出状态码和wait)

本文关于处理子进程退出状态码的内容主体来自于的第21章. 子进程退出状态码 每个子进程在退出时,操作系统都会保留它们的退出状态码,并在内核维护的进程表中保留子进程项.对 ...

linux系统状态查看/管理相关命令

系统状态查看命令: w 查看用户 top 系统进程监控 uptime 查看某台服务器运行了多久 htop 更加先进的交互式监控工具(需要安装) iotop 监控并实时显示磁盘IO输入和输出和程序进程( ...

Linux内核源码详解——命令篇之iostat[zz]

本文主要分析了Linux的iostat命令的源码,iostat的主要功能见博客:性能测试进阶指南——基础篇之磁盘IO iostat源码共563行,应该算是Linux系统命令代码比较少的了.源代码中主要 ...

【Linux】 源码安装make命令详解,避免踩坑

正常的编译安装/卸载: 源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install).   configure文件是一个可执行的脚本文件,它有很多选项, ...

Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

shell脚本之变量与状态码

目录: 前言 如何创建一个脚本 脚本调试 变量相关 变量的命令规则 bash中变量的种类 本地变量 环境变量 只读和位置变量 位置变量 查询变量 进程的退出状态与状态码 前言 在linux管理中,sh ...

Linux Shell学习笔记:exit退出状态代码

inux提供$?特殊变量来保存最后一条命令执行结束的退出状态.执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值. 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令 ...

随机推荐

kafka 集群安装与安装测试

一.集群安装 1. Kafka下载:wget https://archive.apache.org/dist/kafka/0.8.1/kafka_2.9.2-0.8.1.tgz 解压 tar zxvf ...

直接用bat命令对Inno Setup的脚本文件.iss进行编译

直接用bat命令对Inno Setup的脚本文件.iss进行编译 2010-06-17 15:17 qjn0059 | 浏览 2163 次 编程语言外语学习 分享到:   2010-06-29 11: ...

转: Android 后台任务型App多进程架构演化

评注:android 后台分进程保活方式的实践 Android 后台任务型App多进程架构演化 字数1621 阅读2790 评论8 喜欢35 什么是后台任务型app 类似音乐.录音机,需要用户长时间在 ...

util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案

ylbtech-funcation-util:  C# 复杂条件查询(sql 复杂条件查询)查询解决方案 C# 复杂条件查询(sql 复杂条件查询)查询解决方案 1.A,Ylbtech.Model返回 ...

使用java的Calendar对象获得当前日期的上几个度开始、结束时间

思路: 先获得当前季度的开始和结束日期,在当前日期的基础上往前推3个月即上个季度的开始和结束日期 /** * @param flag true:开始日期:false:结束日期 * @return */ ...

thinkphp action.class.php 学习

控制器类(Action) 描述 Description ThinkPHP Action控制器基类 抽象类 位置:ThinkPHP/Lib/Core/Action.class.php 声明: abstr ...

64位操作系统 注册 capicom.dll

把capicom.dll 放到c:\windows\syswow64目录   以管理员身份运行c:\windows\syswow64\cmd.exe   执行 regsvr32 capicom.dll ...

C++学习-10

类型转换:自动转换,显示转换,强转 总结:CPP编译的时候,从上往下,遇到不匹配,声明扩展了一个类的作用域(此时最多只能创建类的指针或者引用),         由于没有定义是不可能使用到类的成员 完 ...

Android Studio教程10-Intent的详细使用

目录 1. Intent启动器 1.1. Intent的用途 1. 启动Activity 3. 传递广播 1.2. Intent类型 1.显示Intent 2.隐式Intent 2. 构建Intent ...

tab 切换实现方法

ul li 实现方法(只适用于,一个页面只有一组ul>li)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值