Pregunta

Por favor ayuda, estoy atrapado aquí ---

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
¿Fue útil?

Solución

Debe citar el parámetro interpolado:

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

Y, cat está esperando un nombre de archivo, no un texto para agregar a test_file, entonces, esto funcionaría como creo que pretendía:

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

Si quieres hacer esto en Ruby puro, házmelo saber y te daré un ejemplo.

Otros consejos

Escriba a en un archivo llamado " archivo de prueba " ;:

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

Escribir en un archivo directamente ya ha sido cubierto por JesperE. Para escribir en un proceso (en este caso, un proceso "gato") use popen.

IO.popen("cat > foo", "w") do
    |f|
    f.write("line1\nline2\n")
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top