Question

Aidez-moi, je suis coincé ici ---

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
Était-ce utile?

La solution

Vous devez citer le paramètre interpolé:

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

Et cat attend un nom de fichier, pas du texte à ajouter à test_file, donc cela fonctionnerait comme je le pensais:

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

Si vous voulez faire cela en pur rubis, faites-le-moi savoir et je vous donnerai un exemple.

Autres conseils

Écrivez un fichier dans un fichier appelé "testfile":

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

L’écriture dans un fichier directement a déjà été couverte par JesperE. Pour écrire dans un processus (dans ce cas, un processus "chat"), utilisez popen.

IO.popen("cat > foo", "w") do
    |f|
    f.write("line1\nline2\n")
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top