无法将 Ruby 块转换为文件

发布于 2024-07-07 12:42:03 字数 235 浏览 4 评论 0原文

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

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

Please help, I am stuck here ---

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

秋心╮凉 2024-07-14 12:42:03

将 a 写入名为“testfile”的文件:

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

Write a to a file called "testfile":

File.open("testfile", "w") do |io| io.print a done
做个少女永远怀春 2024-07-14 12:42:03

您需要引用插值参数:

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

并且, cat 需要一个文件名,而不是附加到 test_file 的一些文本,因此,这将按照我认为您的意图工作:

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

如果您想在纯 Ruby 中执行此操作,请告诉我,我'给你举个例子。

You need to quote the interpolated parameter:

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

And, cat is expecting a filename, not some text to append to test_file, so, this would work as I think you intended:

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

If you want to do this in pure Ruby let me know and I'll give you an example.

对你再特殊 2024-07-14 12:42:03

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

IO.popen("cat > foo", "w") do
    |f|
    f.write("line1\nline2\n")
end

Writing to a file directly has already been covered by JesperE. To write to a process (in this case a "cat" process) use popen.

IO.popen("cat > foo", "w") do
    |f|
    f.write("line1\nline2\n")
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文