如何在 Lua 中获取 go 的输出?

我如何在 Lua 中捕获 go 的编译器错误?

我正在尝试使用 Lua 在 tmux 面板中获取编译器错误的输出,但是在执行脚本时,结果仅在当前面板中显示,而不在第二个面板中显示,且 /tmp/output 文件始终为空。

cmd=io.popen("go build -gcflags=-e scree.go")
f=io.open("/tmp/output")
f:write(cmd:read("*all"))
 for line in f:lines() do
    os.execute("tmux run-shell -t 2 'echo " .. line .. "' ")
 end
f:close()

有没有不使用临时文件的方法来做到这一点?

点赞
用户134702
用户134702

我还不是完全清楚这个。但或许像下面这样。即将 stderr 重定向到 stdout 并捕获结果(未经测试)。

f = assert(io.popen("go build -gcflags=-e scree.go 2>&1"))
for line in f:lines() do
    os.execute("tmux run-shell -t 2 'echo ".. line .."' ")
end
f:close()

我认为关键在于 popen 不会捕获 stderr。有关此事的更多详细信息请参见此处

2019-05-05 21:53:50