Вопрос

Пожалуйста, помогите, я застрял здесь ---

irb> a = "line of text\n  line two\n  line three"
irb> system("cat > test_file << #{a}")
cat: of: No such file or directory
cat: text: No such file or directory
=> false
Это было полезно?

Решение

Вам нужно заключить в кавычки интерполированный параметр:

system("cat > test_file << \"#{a}\"")

Кроме того, cat ожидает, что имя файла, а не какой-либо текст добавляется в test_file, поэтому это будет работать так, как я думаю, вы и предполагали:

system("echo \"#{a}\" >> test_file")

Если вы хотите сделать это в чистом Ruby, дайте мне знать, и я приведу вам пример.

Другие советы

Запишите файл с именем " testfile "

.
File.open("testfile", "w") do |io| io.print a done

Прямая запись в файл уже была рассмотрена JesperE. Для записи в процесс (в данном случае «процесс») используйте popen.

IO.popen("cat > foo", "w") do
    |f|
    f.write("line1\nline2\n")
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top