执行无效的linux命令时,Lua脚本无法检测/捕获错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了执行无效的linux命令时,Lua脚本无法检测/捕获错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1214字,纯文字阅读大概需要2分钟。
内容图文
![执行无效的linux命令时,Lua脚本无法检测/捕获错误](/upload/InfoBanner/zyjiaocheng/961/8870ce2e3afe4dfebea2f2e61643396f.jpg)
我有以下功能,只要我给它一个有效的命令来执行就可以正常工作.只要我给它一个不存在的命令,脚本就会被错误消息中断.
#!/usr/bin/lua
function exec_com(com)
local ok,res=pcall(function() return io.popen(com) end)
if ok then
local tmp=res:read('*a')
res:close()
return ok,tmp
else
return ok,res
end
end
local st,val=exec_com('uptime')
print('Executed "uptime" with status:'..tostring(st)..' and value:'..val)
st,val=exec_com('zzzz')
print('Executed "zzzz" with status:'..tostring(st)..' and value:'..val)
当我运行上面的脚本时,我得到以下输出:
Executed "uptime" with status:true and value: 18:07:38 up 1 day, 23:00, 3 users, load average: 0.37, 0.20, 0.20
sh: zzzz: command not found
Executed "zzzz" with status:true and value:
你可以清楚地看到,在执行奇怪的“zzzz”时,pcall()函数仍然报告成功.
有人可以帮助我设法在使用Lua脚本执行不存在或格式错误的Linux命令时捕获异常吗?谢谢.
编辑:在得到pcall()按预期工作的说明后重申了我的请求,问题是由于popen()没有抛出错误.
解决方法:
我使用的方法类似于“临时解决方法”,但它提供了更多信息:
local cmd = "uptime"
local f = io.popen(cmd .. " 2>&1 || echo ::ERROR::", "r")
local text = f:read "*a"
if text:find "::ERROR::" then
-- something went wrong
print("error: " .. text)
else
-- all is fine!!
print(text)
end
内容总结
以上是互联网集市为您收集整理的执行无效的linux命令时,Lua脚本无法检测/捕获错误全部内容,希望文章能够帮你解决执行无效的linux命令时,Lua脚本无法检测/捕获错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。