Lua os.execute() 命令有问题。
我只想回显一个单词并将其写入文件,例如echo 'aword' > C:\folder\tempworkspace\foo
尝试 os.execute() 命令。目录 C:\folder\tempworkspace 存在,“foo”是我希望命令创建并填充“aword”的文件的名称。稍后,当它起作用时,我想调用 R,使用R -q -e "rbinom(1000,1,0.7)" > C:\folder\tempworkspace\foo
.
我已经尝试过 Lua 编程中提供的所有建议 - os.execute() 在 Windows 中不起作用,为什么 Program Files 中的应用程序不能在 lua 中使用 os.execute 运行? 但我的问题似乎是另一个问题,甚至可能不在语法上,而是在其他地方?
当我直接在命令提示符中键入这些命令时,它们就起作用了。我使用 Windows 7 Professional 作为管理员,使用 Lua 5.1.4 和 Eclipse。
这是我到目前为止所尝试的:
os.execute("echo 'hehe' > C:\folder\tempworkspace\foo")
os.execute [["echo 'hehe' > C:\folder\tempworkspace\foo"]]
os.execute [["echo 'hehe' > 'C:\folder\tempworkspace\foo'"]]
os.execute [[echo 'hehe' > C:\folder\tempworkspace\foo]]
os.execute [[echo 'hehe' > C:\\folder\\tempworkspace\\foo]]
os.execute[[cmd.exe /c echo 'hehe' > C:\folder\tempworkspace\foo]]
os.execute("cmd.exe /c echo 'hehe' > C:\\folder\\tempworkspace\\foo")
os.execute("cmd.exe /c echo 'hehe' > 'C:\\folder\\tempworkspace\\foo'")
对于改进我的代码的任何建议,我将不胜感激。(注意:我正在写入一个文件,因为我想稍后在 lua 中使用输出。另一种方法是使用 io.popen() 已在某处提出,但据说它依赖于平台,无论如何我的当我尝试使用时 Lua 崩溃x = io.popen("R -q -e 'rnorm(10)'")
)。
编辑,在第一个答案后:
您的 sendMsg 功能不知何故在我的计算机上也不起作用,而且我没有收到任何错误,我真的想知道是什么问题。对于 pcall,我这样做对吗?由于该行print(err)
没有打印任何内容,我想知道我是否做得正确。
function sendMsg(cmd, msg, fpath)
local output = cmd.. " ".. msg.. " > ".. fpath
print(output)
os.execute(output)
end
function sendMsgArgs()
sendMsg("echo", "huhu", "C:\\merret\\tempworkspace\\foo");
end
err = pcall(sendMsgArgs)
if err == true then
print("THIS WORKED")
else
print("THIS DID NOT WORK")
print(err)
end
编辑:这实际上是一个 Eclipse/编辑器问题。所以想加一些标签,比如lua-eclipse,但是不能。