相同点:都是调用Linux底层脚本及程序
不同点:
(1)luci.sys.call(command)
脾气捉摸不透,实际使用有些时候没有得到任何状态或数据返回,纯粹被用了一下。
(2)luci.sys.exec(command)
比较可靠,可以返回标准输出,比如value = luci.sys.exec(command)
获取执行结果用作参量。message = luci.sys.exec(command 2>&1)
则错误、标准都输出,用作显示执行过程。
(3)os.execute(command)
可以得到命令的运行状态,执行成功则得到 true,失败则得到 false,但不会标准输出 0 或 1。常用作判断。比如文章来源:https://www.toymoban.com/news/detail-640812.html
if os.execute('ls "'..file..'" >nul 2>nul') ~= 0 then
message = '文件不存在'
end
但下面这样使用却是不行的(因为不会标准输出 0 或 1):
value = os.execute('ls "'..file..'" >nul 2>nul')
if value ~= 0 then
message = '文件不存在'
end
实际使用发现:当执行过程要耗费很长时间(比如复制一个很大的文件)时,luci.sys.exec会一直到执行结束才返回数据。而os.execute却没有,很快返回(但并不是每个命令都这样,捉摸不透)。luci.sys.call用得少,没留意。文章来源地址https://www.toymoban.com/news/detail-640812.html
到了这里,关于lua中执行luci.sys.call、luci.sys.exec、os.execute的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!