ruby - Evolution 电子邮件客户端,管道到程序,代码始终返回 0

标签 ruby linux email-client

我在 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/

相关文章:

ruby - 找出数组中有多少元素包含数字

ruby - ruby 应用程序的理想目录结构是什么

c - 使用 system() 执行命令时如何设置环境变量?

perl - POP3 是否区分已读和未读邮件

ruby - 在 Ruby2 中克隆哈希

ruby-on-rails - 在初始 "Setter"(属性编写器样式)方法调用上递增

linux - RX/TX ring和sk_buff有什么关系?

linux - Git 凭证助手不起作用

php - 是否可以禁用 iPhone 的自动超链接?

android - GMail 应用程序中的响应式图像对齐