2016-06-01 4 views
0

Я пытаюсь получить мой выход выглядеть следующим образом:Запись файла с 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 

Любая идея, как записать файл, чтобы он отображался в правильном формате?

Благодаря

+0

Если вы действительно хотите получить ответ, напишите все соответствующие коды/файлы. –

+0

В какой-то момент вы захотите принять вход от STDIN, хотя, поскольку вы здесь ничего не трансформируете, я смущен тем, что на самом деле делает эта программа. 'echo ...>./data_files/list.txt' будет намного проще. – tadman

ответ

2

Оболочка не распознает \n как символ новой строки в обычных одиночных кавычках; вы передаете буквальный обратный слэш-n в Ruby. (А Рубин не обрабатывает входные строки так, как это делает буквенные строки в Ruby-кода.)

Если оболочка Баш, вы можете использовать $'...' 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' 
+0

Спасибо, Марк! Отличное объяснение (и я просто попробовал, и он работает!). Примут через 9 минут – user3007294

Смежные вопросы