首页 > 解决方案 > Bash 脚本未在 .lua 上执行,退出状态 7(参数列表太长)

问题描述

.lua文件正在执行,因为我m.log()在日志中看到了字符串,但没有执行 bash 代码。为什么?有什么我想念的吗?日志中也没有关于os.execute().

#!/usr/bin/lua

function main()
m.log(1,"Starting script execution \n")
os.execute ("route add xx.xxx.xxx.xxx reject")
## i also tried os.execute ("/path/to/file.sh") and giving permision to execute with chmod +x filename.sh
m.log(1,"Script execution finished\n")
end

注意:我os.execute()直接在我的命令提示符中执行了命令,并且 IP 被添加到了route,所以我的 lua 代码有问题......

.lua我将权限从具有and文件的文件夹/文件更改为 777,.sh只是为了测试它是否是权限问题,没有任何改变,我还尝试更改所有者和用户组。

编辑 - 这个波纹管不起作用,因为它在/root/文件夹上,所以我需要把它移到/var/www/.

os.execute ("/path/to/file.sh")

但是 bash 代码没有被执行,os.execute正在返回退出状态 7(Arg 列表太长),我搜索了一下,我意识到这是因为整个 bash 代码正在引号内执行:为什么我得到“/ bin /sh:参数列表太长”传递引用的参数时?

我该如何解决?

标签: bashshelllua

解决方案


您应该检查os.execute的结果,因为它会将命令的退出状态作为结果之一返回。

您还可以使用io.popen运行脚本并检查生成的输出。


推荐阅读