linux检查脚本错误的命令,执行无效的linux命令时,Lua脚本无法检测/捕获错误

我有以下功能,只要我给它一个有效的命令来执行就可以正常工作.只要我给它一个不存在的命令,脚本就会被错误消息中断.

#!/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()没有抛出错误.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值