【问题标题】:Writing File with ARGV Ruby使用 ARGV Ruby 编写文件
【发布时间】:2016-06-01 23:52:41
【问题描述】:

我试图让我的输出看起来像这样:

$100.00
teddy bear,$5.00
shirt,$22.75
pants,$50.35

但是,当我运行命令将输入​​写入文件时,我得到了错误的格式:

ruby start.rb '$100.00\nteddy bear,$5.00\nshirt,$22.75\npants,$50.35'

start.rb:

input  = ARGV.first
File.open('./data_files/list.txt', 'w') {|file| file.write(input)}

最终输出(在我的 data_files/list.txt 文件中):

$100.00\nteddy bear,$5.00\nshirt,$22.75\npants,$50.35

知道如何编写文件以使其以正确的格式显示吗?

谢谢

【问题讨论】:

  • 如果您真的需要答案,请发布所有相关代码/文件。
  • 在某些时候你会想要从 STDIN 获取输入,但由于你在这里并没有真正转换任何东西,我对这个程序实际上做了什么感到困惑。 echo ... > ./data_files/list.txt 会容易得多。

标签: ruby shell argv


【解决方案1】:

shell 无法将\n 识别为常规单引号字符串中的换行符;您正在将文字反斜杠-n 传递给 Ruby。 (而且 Ruby 处理输入字符串的方式不像它在 Ruby 代码中处理文字字符串的方式。)

如果你的 shell 是 bash,你可以使用 $'...' ANSI 字符串来代替:

ruby start.rb $'$100.00\nteddy bear,$5.00\nshirt,$22.75\npants,$50.35'

否则,您可以使用文字换行符:

ruby start.rb '$100.00
teddy bear,$5.00
shirt,$22.75
pants,$50.35'

【讨论】:

  • 谢谢马克!很好的解释(我刚刚尝试过,它有效!)。将在 9 分钟内接受
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多