我在 Evolution 电子邮件客户端中使用“管道到程序”选项,该选项运行以下 ruby 脚本
#!/usr/bin/ruby
%% example code below
junk_mail = 2
junk_mail
现在,无论 junk_mail 变量的值是什么,该程序始终返回 0。
我猜这与 Evolution 派生一个子进程来运行此代码有关,并且总是收到 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)。
最佳答案
使用退出
:
#!/usr/bin/ruby
junk_mail = 2
exit junk_mail
您可以通过从 Linux 命令行运行它来测试它,然后通过回显退出值
echo $?
编辑
将 STDIN 读入单个字符串:
email_txt = STDIN.readlines.join
关于ruby - Evolution 电子邮件客户端,管道到程序,代码始终返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22285453/