Questions tagged «exit-status»

如果您的问题是围绕确定或利用命令的退出状态(返回代码),请使用此标记。通用语法涉及$?变量以及&&和|| 符号。

4
进程终止时的默认退出代码?
当某个进程被可处理的信号(例如SIGINT或)杀死SIGTERM而不处理该信号时,该进程的退出代码是什么? 对于像这样的无法处理的信号SIGKILL呢? 据我所知,杀死一个SIGINT可能导致退出代码的进程130,但这会因内核或外壳实现而有所不同吗? $ cat myScript #!/bin/bash sleep 5 $ ./myScript <ctrl-c here> $ echo $? 130 我不确定如何测试其他信号... $ ./myScript & $ killall myScript $ echo $? 0 # duh, that's the exit code of killall $ killall -9 myScript $ echo $? 0 # same problem




5
立即返回特定返回码的Unix命令?
是否有标准的Unix命令,其执行的操作与以下示例相似 $ <cmd here> 56 $ echo Return code was $? Return code was 56 $ <cmd here>应该是可以分叉执行的东西,当进程退出时将56作为退出代码。在exit和returnshell内建不适合我要找的,因为它们影响调用shell本身它退出了。<some cmd>应该是我可以在非shell上下文中执行的东西-例如,使用调用Python脚本subprocess。 例如,/usr/bin/false总是立即返回返回码1,但是我想精确控制返回码是什么。我可以通过编写自己的包装脚本来达到相同的结果 $ cat my-wrapper-script.sh # i.e., <some cmd> = ./my-wrapper-script.sh #!/usr/bin/bash exit $1 $ ./my-wrapper-script.sh 56 $ echo $? 56 但是我希望这里确实存在可以为我做的标准Unix命令。


2
bash脚本末尾的退出代码
我对bash脚本结尾处的退出代码的含义感到困惑:我知道退出代码0表示成功完成了退出,而且还有更多的退出代码编号(如果我没记错的话,为127)。 我的问题是关于在脚本末尾看到退出代码0时,即使脚本失败还是会强制退出代码为0还是有其他含义?

5
在Bash中键入单个感叹号有什么作用?
Bash使用惊叹号扩展历史记录,如对此问题的答案所述(例如,使用来sudo !!运行先前的命令行sudo)。但是,我找不到任何地方可以解释运行以下命令(即单个感叹号)的作用: ! 它似乎什么也没打印,并以1退出,但是我不确定为什么要这样做。我已经在网上和Bash手册页中进行了查找,但是除了它是一个“保留字”这一事实外,什么都找不到,但是},并运行以下命令: } 打印错误: bash: syntax error near unexpected token `}'

3
保存退出代码以备后用
因此,我有一个用于运行某些测试的小脚本。 javac *.java && java -ea Test rm -f *.class 现在的问题是,当我运行脚本时./test,即使由于rm -f *.class成功而导致测试失败,它也会返回成功的退出代码。 我想让它做我想做的唯一方法对我来说很丑陋: javac *.java && java -ea Test test_exit_code=$? rm -f *.class if [ "$test_exit_code" != 0 ] ; then false; fi 但这似乎是一个常见的问题-执行任务,清理,然后返回原始任务的退出代码。 什么是最惯用的方式(使用bash或一般来说只是shell)?



2
如何使“本地”捕获退出代码?
在我的项目中,我有以下代码段: local output="$(bash "${1##*/}")" echo "$?" 由于local,这始终显示为零,但是,删除local会导致$?变量正确运行:这是假定从子shell退出代码。 我的问题是:如何在保留退出值的同时保持局部变量不变?

4
Bash脚本通过测试命令返回状态来检测版本控制系统
我正在开发一个bash脚本,该脚本要用于几种类型的VCS。我正在考虑通过运行典型的info命令并检查返回码,成功或错误来测试目录是否是系统的存储库。用伪代码: if a svn command succeded; Then run svn commands elif a darcs command succeded; Then run darcs commands elif a mercurial command succeded; then run hg commands else something else fi 我可以运行一个命令,例如, darcs show repo并用于$?获取其返回代码。 我的问题是:是否有一种巧妙的方法可以在一行中运行并返回返回码号?例如 if [ 0 -eq `darcs show repo`$? ]; 还是我必须定义一个功能? 附加要求是应同时打印stderr和stdout。

2
ENOANO(无阳极)打算用于什么用途?
这个问题仅仅是出于好奇,但我怀疑其他人也会好奇。通过搜索errno.h(Linux 2.6的),我发现ENOANO“ No Anode”。没有“无阴极”错误的迹象。查看内核源代码的一致性,它似乎并没有被称为阳极的设备使用,而只是被一些晦涩的设备驱动程序故意作为怪异的错误代码使用。谷歌搜索没有发现任何兴趣。 这可能是个玩笑吗?它是在POSIX之类的标准文档中定义的,但是没有用吗?

5
捕获退出命令的退出代码
我在bash脚本中有这个: exit 3; exit_code="$?" if [[ "$exit_code" != "0" ]]; then echo -e "${r2g_magenta}Your r2g process is exiting with code $exit_code.${r2g_no_color}"; exit "$exit_code"; fi 看起来它将在退出命令后立即退出,这很有意义。我想知道是否有一些简单的命令可以提供退出代码而无需立即退出? 我当时在猜测: exec exit 3 但它会显示错误消息:exec: exit: not found。我能做什么?:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.