使用ARGV Ruby编写文件

时间:2016-06-01 15:50:47

标签: ruby shell argv

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

$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

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

由于

1 个答案:

答案 0 :(得分:2)

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'