Ruby反引号代码以136退出?

时间:2011-01-07 14:10:22

标签: ruby shell

我有一个ruby脚本,通过反引号执行另一个ruby脚本。像这样:

output = `#{name}/#{sccript} --list`

在某些情况下(我在二进制包的构建期间运行此操作并且有多个相同脚本运行的实例),这将失败。

输出为0长度,$?设置为136。

任何想法会导致什么?

2 个答案:

答案 0 :(得分:8)

Exit code 136在129-255范围内,表示由Unix信号终止的作业。

要找出哪个信号,减去128,然后找到它的信号8:SIGFPE。一个可能的原因可能是在C程序中整数除零。

答案 1 :(得分:0)

反引号将始终返回调用的stdout,如果你只想要真或假,请使用系统:

ruby-1.9.2-p0 :009 > \`echo "hello"\`
=> "hello\n"   
ruby-1.9.2-p0 :010 > system("echo 'hello'")   
hello 
=> true

所以,回答你的问题'136'是你的脚本返回的内容