Incapaz de gato rubi blocos para arquivos
Pergunta
Por favor, ajuda, eu estou preso aqui ---
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
Solução
Você precisa citar o parâmetro interpolada:
system("cat > test_file << \"#{a}\"")
E, gato está esperando um nome de arquivo, e não algum texto para acréscimo para test_file, então, isso funcionaria como eu acho que você pretendia:
system("echo \"#{a}\" >> test_file")
Se você quiser fazer isso em Ruby puro deixe-me saber e eu vou lhe dar um exemplo.
Outras dicas
Dê a sua para um arquivo chamado "testfile":
File.open("testfile", "w") do |io| io.print a done
Escrevendo para um arquivo diretamente já foi coberto por JesperE. Para escrever a um processo (neste caso, um processo de "cat") uso popen.
IO.popen("cat > foo", "w") do
|f|
f.write("line1\nline2\n")
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow