0

我需要为命令行调用的输出设置一个变量,但不将该信息显示到控制台。例如

output = `echo asdf`

但实际上并未向控制台显示“asdf”或“echo asdf”。那可能吗?

4

2 回答 2

1

在 REPL 中返回 Nil

当使用 irb 或 pry 时,一行中的最后一个表达式是 REPL 循环打印到控制台的唯一表达式。例如:

output = %x(echo asdf); nil
# => nil

您可以使用它来抑制到控制台的输出,但是您并没有真正添加任何真正的安全性,因为(根据定义)REPL 中可用的任何变量都可以被控制台上的人访问。因此:

output = %x(echo foo); nil
# => nil
output
# => "foo\n"

用 Pry 不返回任何东西

使用 pry,您可以通过将分号作为一行中的最后一项来完全禁用输出。例如:

[1] pry(main)> output = `echo asdf`;
[2] pry(main)> 

这适用于 pry,但不适用于 irb。您的里程可能会因这种技术而异。

于 2013-09-09T18:35:33.833 回答
0

如下启动您的 IRB:

kirti@kirti-Aspire-5733Z:~$ irb --noecho
2.0.0p0 :001 > output = `echo asdf`
2.0.0p0 :002 > output
2.0.0p0 :003 > puts output
asdf
2.0.0p0 :004 > 
于 2013-09-09T18:16:42.333 回答