Evolution电子邮件客户端,管道编程,代码总是返回0

时间:2014-03-09 17:25:50

标签: ruby linux email-client

我正在使用"管道编程" Evolution电子邮件客户端中的选项,运行在ruby脚本

之后
#!/usr/bin/ruby
%% example code below
junk_mail = 2
junk_mail

现在这个程序总是返回0,不管junk_mail变量的值是什么。

我猜这与Evolution forking子进程运行此代码有关,并且总是收到0(干净退出)?

需要帮助。

修改

我发现实际问题是从管道读取数据。以下代码在命令行中进行测试时工作正常,但从Evolution客户端调用时无法读取管道数据

#!/usr/bin/ruby
email_txt = ARGF.read
File.open("~/debug.txt", 'a') { |file| file.write(email_txt + "\n") }


$cat email.txt | ./myprog.rb

这会按预期提供debug.txt,但是当从Evolution管道到程序调用时,它会提供空数据。

从外部程序调用时,我是否使用正确的方式读取管道流数据? (我在Fedora 20下)。

1 个答案:

答案 0 :(得分:0)

使用exit

#!/usr/bin/ruby

junk_mail = 2
exit junk_mail

您可以通过在linux中的命令行运行它来测试它,然后通过

回显退出值
echo $?

修改

将STDIN读入单个字符串:

email_txt = STDIN.readlines.join