【发布时间】:2016-08-19 15:14:02
【问题描述】:
我有以下 perl 脚本 (test.pl):
my $exit_code = system('./test.py');
print $exit_code."\n";
试图从 python 可执行文件 (test.py) 中捕获退出代码:
#!/bin/env python
import sys
sys.exit(2)
直接运行 python 可执行文件返回 2,这是我的预期:
> ./test.py
> echo $?
2
但是,运行 perl 会返回不同的结果:
> perl test.pl
512
为什么 perl 捕获了与 python 不同的退出代码?
【问题讨论】:
-
512不能是退出代码 -- 退出代码是单字节的,因此值太大而无法容纳。 -
@CharlesDuffy:Perl 的
system()返回一个相当时髦的退出代码版本。要获得实际值,您需要右移 8。所以 512 是一个有效的返回值,实际上意味着 2 :-/ -
@DaveCross,是的,答案表明已经存在;我的观点是,perl 捕获的显然根本不是文字退出代码。
-
@Charles Duffy,它们在 Windows 中是 16 位的
-
@ikegami,...如果 OP 没有在他们的脚本上使用 shebangs,我可能认为 Windows 是一个合理的平台,但情况是...
标签: perl