1

请帮忙,我被困在这里---

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
4

3 回答 3

3

写入一个名为“testfile”的文件:

File.open("testfile", "w") do |io| io.print a done
于 2008-10-25T17:33:58.000 回答
2

您需要引用插值参数:

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

而且, cat 需要一个文件名,而不是一些要附加到 test_file 的文本,所以,这将按照我的想法工作:

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

如果你想在纯 Ruby 中做到这一点,请告诉我,我会给你一个例子。

于 2008-10-25T17:30:30.017 回答
0

JesperE 已经涵盖了直接写入文件。要写入进程(在本例中为“cat”进程),请使用 popen。

IO.popen("cat > foo", "w") do
    |f|
    f.write("line1\nline2\n")
end
于 2008-10-25T17:55:47.410 回答