Bash 脚本在 .lua 文件上未被执行,退出状态 7(参数列表太长)

由于我在日志中看到了 m.log() 函数的字符串,因此 .lua 文件正在被执行,但 Bash 代码未被执行。为什么?我错过了什么吗?而且关于os.execute()命令,日志中没有任何错误。

#!/usr/bin/lua

function main()
m.log(1,"开始脚本执行\n")
os.execute ("route add xx.xxx.xxx.xxx reject")
## 我还尝试了 os.execute ("/path/to/file.sh") 并使用 chmod +x filename.sh 使其可执行。
m.log(1,"脚本执行完成\n")
end

注意:我直接从命令提示符中执行了来自 os.execute() 的命令, IP 地址已添加到路由中,因此我的 Lua 代码出现错误 ......

我将.lua.sh文件所在的文件夹/文件的权限从 777 更改为仅测试权限问题,但仍然没有改变,我还尝试更改所有者和用户组。

编辑- 这个不行是因为它在 /root/ 文件夹中,所以我需要将其移动到 /var/www/ 中。

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

但是,Bash 代码未被执行,os.execute 返回退出状态 7(参数列表太长),我查找了一下,发现这是因为整个 Bash 代码都在引号中被执行:当传递带引号的参数时,为什么我会得到 "/bin/sh: Argument list too long" ?

如何解决这个问题?

点赞
用户1442917
用户1442917

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

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

2019-05-07 15:32:31