我有一个用 python 编写的框架,出于测试目的,我基本上想做一个子进程(又名 shell 调用)...它应该简单地返回 RC != 0。我试图调用一些不存在的可执行文件;或者运行“exit 1”;但由于某种原因,这些被转换为 FileNotFoundError。
那么,我还能做些什么来触发返回代码!= 0(以“可靠”的方式;意味着命令不应该在未来的某个时间点突然返回 0)。
我想“搜索”一个名为 exit 的二进制文件,但是:
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
答案1
如果你正在寻找系统命令总是返回非零的退出代码,那么/bin/false
看起来它应该对你有用。来自man false
:
NAME
false - do nothing, unsuccessfully
SYNOPSIS
false [ignored command line arguments]
false OPTION
DESCRIPTION
Exit with a status code indicating failure.
答案2
您可以使用命令创建新的返回代码bash -c "exit RETURNCODE"
,将“RETURNCODE”替换为任意数字。请注意,它将被 (RETURNCODE mod 256) 修剪为 8 位无符号整数 (0...255)
您可以检查最后一个 shell 命令的返回码在终端内(!)执行echo $?
。“$?”变量包含最新的返回代码,“echo”将其打印到标准输出。
答案3
经过更多的测试后,我发现我的问题不在“Linux”方面。
Python 有一个模块 shlex; 应该用来“拆分”命令字符串。当我将子进程调用更改为使用shlex.split()
调用“bash exit 1”的输出时,我得到了我需要的东西。