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