我正在使用"管道编程" 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下)。
答案 0 :(得分:0)
使用exit
:
#!/usr/bin/ruby
junk_mail = 2
exit junk_mail
您可以通过在linux中的命令行运行它来测试它,然后通过
回显退出值echo $?
将STDIN读入单个字符串:
email_txt = STDIN.readlines.join