当一个进程被一个可处理的信号杀死时,例如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) 我想做这样的事情:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
Linux 中以下退出代码的最小值和最大值是多少:
exit)。return)。我认为这是介于0和之间255。我想用失败的命令测试我的脚本。我可以使用带有错误参数的现有命令。我还可以编写一个简单的脚本,该脚本会立即因失败而退出。这两种方法对我来说都很容易做和工作,但是如果有一个用于此目的的标准命令,我想改用它。
是否有一个标准的 Unix 命令可以执行类似于我下面的示例的操作
$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
Run Code Online (Sandbox Code Playgroud)
<cmd here>应该是可以 fork-execed 的东西,并在进程退出时留下 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
Run Code Online (Sandbox Code Playgroud)
但我希望碰巧存在一个标准的 Unix 命令可以为我做到这一点。
我对 bash 脚本末尾的退出代码的含义感到困惑:我知道退出代码 0 表示它成功完成,并且还有更多的退出代码编号(如果我没记错的话,是 127?)
我的问题是当在脚本末尾看到退出代码 0 时,它是否会强制退出代码为 0,即使脚本失败还是有其他含义?
我正在设置这样的变量:
myvar=$(command --params)
Run Code Online (Sandbox Code Playgroud)
之后我想检查$?我的命令的退出代码 ( )。$?像这样检查总是会返回,0因为它成功地将变量设置为命令的输出。
是否有可能获得 的返回值command?
我想递归地找到接受文件作为参数的脚本返回非零值的所有文件。知道如何使用“查找”或类似工具执行此操作吗?
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。
我正在尝试将grep表达式的退出状态获取到这样的变量中:
check=grep -ci 'text' file.sh
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
No command '-ic' found
Run Code Online (Sandbox Code Playgroud)
我应该用管道命令来做吗?
exit-status ×10
bash ×5
shell-script ×4
command-line ×3
exit ×3
shell ×3
executable ×1
files ×1
find ×1
function ×1
grep ×1
kill ×1
linux ×1
scripting ×1
signals ×1