Domanda

Per favore aiutatemi, sono bloccato qui ---

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
È stato utile?

Soluzione

Devi citare il parametro interpolato:

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

E, cat si aspetta un nome file, non del testo da aggiungere a test_file, quindi, questo funzionerebbe come penso tu volessi:

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

Se vuoi farlo in puro Ruby fammi sapere e ti faccio un esempio.

Altri suggerimenti

Scrivi a in un file chiamato " testfile " ;:

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

La scrittura su un file direttamente è già stata coperta da JesperE. Per scrivere in un processo (in questo caso un processo "cat") usa popen.

IO.popen("cat > foo", "w") do
    |f|
    f.write("line1\nline2\n")
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top