Impossibile cat rubare i blocchi di Ruby ai file
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
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