标签: exit-status

进程终止时的默认退出代码?

当一个进程被一个可处理的信号杀死时,例如SIGINTorSIGTERM但它不处理该信号,该进程的退出代码是什么?

对于无法处理的信号,例如SIGKILL?

据我所知,杀死进程SIGINT可能会导致退出代码130,但这会因内核或外壳实现而异吗?

$ cat myScript
#!/bin/bash
sleep 5
$ ./myScript
<ctrl-c here>
$ echo $?
130
Run Code Online (Sandbox Code Playgroud)

我不确定如何测试其他信号...

$ ./myScript &
$ killall myScript
$ echo $?
0  # duh, that's the exit code of killall
$ killall -9 myScript
$ echo $?
0  # same problem
Run Code Online (Sandbox Code Playgroud)

kill signals exit exit-status

73
推荐指数
3
解决办法
8万
查看次数

Bash:如果 command1 失败,则运行 command2

我想做这样的事情:

if cmd1 && cmd2
echo success
else
echo epic fail
fi
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

bash shell-script exit-status

72
推荐指数
3
解决办法
7万
查看次数

Linux 中退出代码的最小值和最大值是多少?

Linux 中以下退出代码的最小值和最大值是多少:

  1. 从二进制可执行文件(例如:C 程序)返回的退出代码。
  2. 从 bash 脚本返回的退出代码(调用 时exit)。
  3. 从函数返回的退出代码(调用时return)。我认为这是介于0和之间255

linux executable function exit-status

60
推荐指数
3
解决办法
2万
查看次数

是否有一个标准命令总是以失败而退出?

我想用失败的命令测试我的脚本。我可以使用带有错误参数的现有命令。我还可以编写一个简单的脚本,该脚本会立即因失败而退出。这两种方法对我来说都很容易做和工作,但是如果有一个用于此目的的标准命令,我想改用它。

command-line shell shell-script exit exit-status

54
推荐指数
1
解决办法
2万
查看次数

立即返回特定返回码的 Unix 命令?

是否有一个标准的 Unix 命令可以执行类似于我下面的示例的操作

$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
Run Code Online (Sandbox Code Playgroud)

<cmd here>应该是可以 fork-execed 的东西,并在进程退出时留下 56 作为退出代码。在exitreturnshell内建不适合我要找的,因为它们影响调用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
Run Code Online (Sandbox Code Playgroud)

但我希望碰巧存在一个标准的 Unix 命令可以为我做到这一点。

command-line shell exit-status

34
推荐指数
3
解决办法
8501
查看次数

bash 脚本末尾的退出代码

我对 bash 脚本末尾的退出代码的含义感到困惑:我知道退出代码 0 表示它成功完成,并且还有更多的退出代码编号(如果我没记错的话,是 127?)

我的问题是当在脚本末尾看到退出代码 0 时,它是否会强制退出代码为 0,即使脚本失败还是有其他含义?

bash shell-script exit exit-status

31
推荐指数
2
解决办法
13万
查看次数

我可以从使用 $(command) 启动的子 shell 获取退出代码吗?

我正在设置这样的变量:

myvar=$(command --params)
Run Code Online (Sandbox Code Playgroud)

之后我想检查$?我的命令的退出代码 ( )。$?像这样检查总是会返回,0因为它成功地将变量设置为命令的输出。

是否有可能获得 的返回值command

bash shell-script command-substitution exit-status

28
推荐指数
1
解决办法
2万
查看次数

查找命令失败的文件

我想递归地找到接受文件作为参数的脚本返回非零值的所有文件。知道如何使用“查找”或类似工具执行此操作吗?

scripting find files exit-status

26
推荐指数
1
解决办法
1090
查看次数

在 Bash 中输入单个感叹号有什么作用?

Bash 使用感叹号进行历史扩展,如该问题的答案中所述(例如,使用sudo !!运行先前的命令行sudo)。但是,我找不到任何解释运行以下命令(即单个感叹号)的作用的地方:

!
Run Code Online (Sandbox Code Playgroud)

它似乎不打印任何内容并以 1 退出,但我不确定为什么会这样。我已经在网上和 Bash 手册页中查看过,但除了它是一个“保留字”这一事实之外,找不到任何东西——但也是如此},并运行这个:

}
Run Code Online (Sandbox Code Playgroud)

打印错误:

bash: syntax error near unexpected token `}'
Run Code Online (Sandbox Code Playgroud)

bash history-expansion exit-status

24
推荐指数
2
解决办法
6423
查看次数

如何将命令的退出状态提取到变量中?

几天前我开始学习 Bash。

我正在尝试将grep表达式的退出状态获取到这样的变量中:

check=grep -ci 'text' file.sh
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

No command '-ic' found
Run Code Online (Sandbox Code Playgroud)

我应该用管道命令来做吗?

command-line shell grep bash exit-status

18
推荐指数
2
解决办法
5万
查看次数