`
ztbsuper
  • 浏览: 23347 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

SHELL的部分内置返回值

阅读更多
退出码的值 含义 例子 注释
1 通用错误 let "var1 = 1/0" 各种各样的错误都可能使用这个退出码, 比如"除0错误"
2 shell内建命令使用错误(Bash文档上有说明) 很少看到, 通常情况下退出码都为1
126 命令调用不能执行 程序或命令的权限是不可执行的
127 "command not found" 估计是$PATH不对, 或者是拼写错误
128 exit的参数错误 exit 3.14159 exit只能以整数作为参数, 范围是0 - 255(见脚注)
128+n 信号"n"的致命错误 kill -9 脚本的$PPID $? 返回137(128 + 9)
130 用Control-C来结束脚本 Control-C是信号2的致命错误, (130 = 128 + 2, 见上边)
255* 超出范围的退出状态 exit -1 exit命令只能够接受范围是0 - 255的整数作为参数
通过上面的表, 我们了解到, 退出码1 - 2, 126 - 165, 和255 [1] 都具有特殊的含义, 因此应该避免使用用户指定的退出参数. 如果脚本使用exit 127作为退出语句, 那么可能就会在故障诊断的时候产生混淆(如何判断这是由"command not found"引起的, 还是由用户定义引起的?). 然而, 许多脚本使用exit 1作为通用的返回错误值. 因为退出码1能够表示的错误太多了, 不过这么做, 对于调试来说, 也起不到任何帮助的作用.
其实早就有人对退出状态值进行了系统的分类(请参考/usr/include/sysexits.h), 不过这个文件是为C/C++程序员准备的. 其实shell脚本也需要这样一个类似的标准. 所以本文作者呼吁限制使用用户定义的退出码, 尤其是范围64 - 113(还有0, 表示成功), 这么做, 就可以和C/C++标准保持一致. 这样我们就有了50个可用的退出码, 而且非常便于故障诊断.
本书中所有例子中的用户定义退出码都符合这个标准, 除了那些超出标准范围的例子, 比如例子 9-2.

只有在Bash或sh提示符下, 当shell脚本退出后, 在命令行上使用$?才会得到与上表相一致的结果. 在某些情况下, 运行C-shell或者tcsh可能会给出不同的值.
注意事项
[1]
超出范围的退出值可能会产生意想不到的退出码. 如果退出值比255大, 那么退出码将会取256的模. 举个例子, exit 3809的退出码将是225(3809 % 256 = 225).
分享到:
评论

相关推荐

    Visual Basic 6.0取得Shell的输出结果

    在VB6中,我们可以使用内置的Shell函数来启动一个外部程序,但这个函数并不直接提供获取命令输出的能力。为了实现这一功能,我们需要使用Windows API(Application Programming Interface)中的函数,如...

    shell脚本返回值及其使用场景的实现

    根据Shell的约定,特定的非零值具有特殊的含义,例如,1表示通用错误,2表示shell内置命令的错误,126表示命令不可执行,127表示命令未找到,128表示`exit`命令参数错误,以及128+n表示接收到的信号n的致命错误。...

    调用Shell 执行exe 等待返回例子(VB)

    Shell函数是VB提供的一个内置函数,用于启动一个新的进程或执行一个外部应用程序。它的基本语法是: ```vb Shell "path\to\application.exe", vbNormalFocus ' 或其他模式 ``` 在这里,“path\to\application.exe...

    vb操作cmd命令行读取返回值

    这通常涉及到使用API调用或者内置的VB函数来启动一个命令行进程,并捕获其输出。下面我们将深入探讨这个主题。 首先,VB中的`Shell`函数可以用来启动外部程序,包括CMD命令行。`Shell`函数的基本语法是: ```vb ...

    source命令 在当前Shell环境中从指定文件读取和执行命令

    source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。 source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。...

    易语言取系统shell32源码,易语言取系统shell32.dll内图标

    其中,图标资源是用于表示文件类型、程序图标等视觉元素的关键部分。在Windows API中,我们可以调用一些函数来提取并显示这些图标。 1. **取系统shell32.dll内图标源码**: 易语言提供了API调用来访问`shell32.dll...

    Korn Shell.doc (kshel语法、变量和内置命令简介)

    变量是 Korn Shell 中非常重要的一部分,它们允许开发者存储和操作数据。下面是一些重要的概念: 1. **变量声明与使用**: - **基本赋值**:`Var=value`。 - **变量替换**:`${var}` 使用变量 `var` 的值。 - **...

    Linux shell 脚本攻略源代码第二版

    文件和目录操作也是Shell脚本的重要部分。例如,`cd`用于改变当前工作目录,`mkdir`用于创建新目录,`cp`和`mv`用于复制和移动文件,而`rm`则用于删除。这些命令在处理批量文件操作时尤其有用。 此外,你将学习到...

    shell -ld教程

    Shell支持许多内置命令,如`cd`用于切换目录,`ls`显示目录内容,`echo`打印字符串,`touch`创建或修改文件时间戳,`rm`删除文件,`cp`复制文件,`mv`移动或重命名文件,`mkdir`创建目录,`rmdir`删除空目录。...

    bash shell

    - **发展**: 随着时间的发展,Bourne Shell 本身经历了一些改进,例如引入了 `CDPATH` 变量、内置的 `test` 命令、命令缓存(hash)以及 shell 函数等。 - **Bash 的出现**: 由于 Berkeley C Shell (csh) 提供了更友好...

    Beginning Shell Scripting

    3. **函数返回值**:虽然Shell脚本没有直接支持返回值的概念,但可以通过退出状态码(exit status)间接返回结果。 #### 七、Shell脚本的最佳实践 1. **错误处理**:始终检查命令的退出状态,确保操作成功执行。 ...

    Linux教程:第4章 Linux shell程序设计.ppt

    在 Linux shell 程序设计中,bash 变量是非常重要的一部分。bash 变量可以分为两种:局部变量和环境变量。局部变量是指在当前 shell 会话中有效的变量,而环境变量是指可以在所有 shell 会话中有效的变量。bash 变量...

    LINUX与UNIX SHELL编程指南(很全)

    第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号...

    Linux教程 Shell精华文章

    2. 使用Shell的内置命令:例如`source`、`eval`、`read`等,提高脚本效率。 3. 正则表达式:在Shell中使用正则表达式进行字符串匹配和处理。 通过这个“Linux教程 Shell精华文章”CHM文档,你将系统地学习到Shell...

    shell 编程指南pdf

    第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号...

    shell语言编程指南.zip

    Shell函数是一段可重复使用的代码,可以接受参数并返回值。定义函数的方式是`function name() { commands; }`,调用时只需写`name`。 **7. Shell命令和内置命令** Shell提供了许多内置命令,如`cd`(改变目录)、`...

    Unix.Shell编程(第三版)

    5. **脚本调试**:介绍如何通过Shell内置的调试工具以及一些最佳实践来调试和优化脚本。 6. **环境变量和别名**:理解环境变量的作用,如何设置和使用它们,以及如何定义别名以简化常用命令。 7. **Shell函数和...

    Shell编程——入门资料

    最后,学习如何使用`man`命令查阅手册页,这对于查找和理解各种Shell内置命令和工具的使用方法非常有帮助。 总的来说,Shell编程是一个高效且实用的技能,它能让你更好地管理和控制Linux系统。通过阅读提供的"shell...

    跟老男孩学Linux运维:Shell编程实战

    / 223.1 什么是Shell变量 / 223.2 环境变量 / 233.3 普通变量 / 313.4 变量定义技巧总结 / 40第4章 Shell变量知识进阶与实践 / 414.1 Shell中特殊且重要的变量 / 414.2 bash Shell内置变量命令 / 524.3 ...

    shell编程指南全套2

    列出了许多常用的Shell内置命令和外部工具,如`cd`, `ls`, `grep`, `find`, `sed`, `awk`等,以及它们的基本用法和实例。 10. **29cgi脚本.pdf** CGI(Common Gateway Interface)脚本讲解,介绍了如何用Shell...

Global site tag (gtag.js) - Google Analytics