在下文中,我尝试将数据传输到shell命令中。
$ irb
> IO.popen("echo <<EOF", mode="r+") {|io| io.write("hello worldEOF"); io.close_write; result=io.read; }
=> "\n"
我希望输出是&#39; hello world&#39;。
为什么我会将换行符作为输出?
答案 0 :(得分:1)
echo
不读取stdin的输入。使用cat
。
IO.popen("cat", mode="r+") { |io|
io.write("hello world\n")
io.close_write
result = io.read
}
# => "hello world\n"
答案 1 :(得分:0)
我希望输出是&#39; hello world&#39;。
您对以下产品的期望是什么?
$ echo <<EOF
> hello world
> EOF
(虽然,您的代码甚至无法实现这一目标。)
在尝试使用ruby执行它之前,确保shell命令在shell中工作可能是个好主意。