将文件中的行作为参数传递给puts?

时间:2014-01-04 23:30:04

标签: ruby shell

可以做这样的事吗?

File.open('/etc/logo', 'r') do |f|
  f.each_line{ |line| puts line }
end

但我不希望将行的内容打印为文本,而是将其视为puts命令的参数。为了使自己清楚,这是示例/ etc / logo:

"\e[34m" + 'BLUE COLOR' + "\e[31m" + 'RED COLOR'

我想将ASCII徽标与我的代码分开。谢谢你的想法。

1 个答案:

答案 0 :(得分:1)

File.open('/etc/logo', 'r') do |f|
    f.each_line{ |line| eval "puts #{line}" }
end

不要让任何人编辑该文件。


如果您想要更安全的方法,请尝试以下方法:

File.open('/etc/logo', 'r') do |f|
    f.each_line{ |line| 
        puts line.gsub(/\\e/, "\e")
    }
end

为此,您应该使用如下文件:

\e[34mBLUE COLOR\e[31mRED COLOR

这只是将转义的\ e替换为真实角色。