我想反转管道命令序列的退出代码:foo | bar在 ZSH 内。所以0映射到1和1-128映射到0。
我想检查为 HTTP(S) URL 返回的 HTTP 状态代码。我不在乎内容,所以我只用 curl -I $url 或 curl --head $url 请求 head
但是我应该检查的退出代码是什么,例如在subprocess.check_call 中?特别是,我是否会获得 HTTP 403 的非零退出代码?
经过多年没有出现问题,我在 64 位 Windows 7 Professional 上安装的cygwin64 中的几个程序突然无法运行,而是似乎立即退出并显示代码 127,这通常意味着在 Bash 中“找不到命令”。尤其是,节目喜欢vim,emacs甚至clear出现此行为,而其他人一样vi,echo,touch,和date似乎正常工作。
起初,我认为上一轮软件包更新可能出了问题,所以我使用 cygwin setup 的命令行界面运行了另一个更新,但似乎没有帮助。
据我所知,受影响的程序根本不起作用。甚至没有--version对程序工作进行标记,这让我认为 cygwin 本身或常见依赖项可能有问题:
$ vim --version
$ echo $?
127
Run Code Online (Sandbox Code Playgroud)
(如果有帮助,我可以提供各种软件包的特定版本号,但由于这个问题在最近更新之前和之后都存在,我怀疑它很重要。)
我仔细检查了我的 PATH 变量,它以 开头/usr/local/bin:/usr/bin:,正如预期的那样。这些程序中是否有一些新的依赖项没有被 cygwin 的包管理器正确解析,或者可能没有自动添加到我的 PATH 中?
我错过了其他明显的东西吗?
假设我有这个简单的 C 程序,它向 shell 返回 4。
int main()
{
return 4;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它,然后做echo $?,我会得到4,这是预期的
$ gcc foo.c && ./a.out
$ echo $?
4 <<<< expected
Run Code Online (Sandbox Code Playgroud)
但是当我执行以下操作时,我什么也没得到
$ gcc foo.c && ./a.out && echo $?
$ <<<< Nothing - WHY????
Run Code Online (Sandbox Code Playgroud) 在Win10 Pro上,卸载并重新安装anaconda后Cmd崩溃;exit code 1从那时起,我就无法访问命令提示符了。
cmd,它就会关闭,并且在 VSCode 中打开会返回错误:
Cmd has exited with error code 1
Run Code Online (Sandbox Code Playgroud)
cmd,它会立即退出而不提供错误消息,但如果我执行它,cmd /d它就会工作(conda),所以我认为它可以在那里工作根据该网站,ErrorCode 1表明:
功能不正确。
指示操作尝试在 Windows 命令提示符中执行无法识别的命令cmd.exe
我尝试过以下方法,但没有任何效果:
PATHcmd,但在我的情况下缺少注册表条目(也许这可能是问题所在?)Sfc /ScanNow
Run Code Online (Sandbox Code Playgroud)
Dism /Online /Cleanup-Image /Scanhealth
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?