我需要为命令行调用的输出设置一个变量,但不将该信息显示到控制台。例如
output = `echo asdf`
但实际上并未向控制台显示“asdf”或“echo asdf”。那可能吗?
我需要为命令行调用的输出设置一个变量,但不将该信息显示到控制台。例如
output = `echo asdf`
但实际上并未向控制台显示“asdf”或“echo asdf”。那可能吗?
当使用 irb 或 pry 时,一行中的最后一个表达式是 REPL 循环打印到控制台的唯一表达式。例如:
output = %x(echo asdf); nil
# => nil
您可以使用它来抑制到控制台的输出,但是您并没有真正添加任何真正的安全性,因为(根据定义)REPL 中可用的任何变量都可以被控制台上的人访问。因此:
output = %x(echo foo); nil
# => nil
output
# => "foo\n"
使用 pry,您可以通过将分号作为一行中的最后一项来完全禁用输出。例如:
[1] pry(main)> output = `echo asdf`;
[2] pry(main)>
这适用于 pry,但不适用于 irb。您的里程可能会因这种技术而异。
如下启动您的 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 >