Lua更改当前/工作目录,Linux(无需LFS或任何非标准模块)
2012-1-28 2:9:0
收藏:0
阅读:186
评论:5
我需要在lua脚本中更改当前工作目录,以执行特定的操作,但是我在这个简单的任务中遇到了麻烦。 我编写了测试脚本test.lua:
os.execute(“cd / usr”)
os.execute(“ls”)
但是lua test.lua输出为:
test.lua
当前目录并没有改变。错在哪里?而且我不能使用LFS或任何非标准模块。
感谢所有人的解释情况。我选择另一种方式:在运行lua脚本之前更改工作目录,但我在脚本中使用的路径和脚本方面遇到了许多麻烦。
原文链接 https://stackoverflow.com/questions/8561659
点赞
stackoverflow用户72344
在 Unix 系统中,os.execute()
会产生一个子进程及其子进程。在 jpjacobs 的回答中,第一个进程会执行 shell。
目录更改操作只影响子进程,不影响 Lua 解释器执行程序的进程。
2011-12-19 13:13:08
stackoverflow用户734069
Lua标准库旨在既小巧又便携。因此,除了几个特定的函数外,它都基于C标准库的功能。它没有改变目录的函数,这就是为什么像LFS这样的库会存在的原因。
你是否考虑过Lua可能不适合你的需求?如果你在一个不允许加载非标准模块的环境中进行类似shell的脚本工作,也许Python或Perl对你来说更好。它们都有丰富的标准库,带有许多功能,而无需下载非标准模块。
如果你想在Lua中进行真正的shell-style脚本编写,你需要使用模块。就是这么简单。所以,你应该使用外部模块或使用其他语言。
2011-12-19 17:26:43
stackoverflow用户312586
这有点 hack,不过你尝试过创建当前文件夹中所需文件夹的符号链接吗,这样就完全不需要改变当前文件夹了。
os.execute("ln -s /usr/foo") -- 在当前目录创建名为 "foo" 的符号链接
os.execute("ln -s /usr/bar") -- 在当前目录创建名为 "bar" 的符号链接
baz = require('foo.baz') -- 加载文件 /usr/foo/baz.lua
2011-12-20 08:21:37
stackoverflow用户4170264
以下是使用 Zerobranie Lua 5.2 编写的程序:
local sP = "E:/Documents/Lua-Projs/SVN/ScriptsWireE2"
local a, b, c = os.execute("cd "..sP.."&& dir")
print(a,b,c)
输出结果如下:
程序“lua.exe”已在 'E:\Documents\Lua-Projs\ZeroBraineIDE\ZeroBraineProjects' 中启动 (pid: 8832)。
驱动器 E 的卷是 Data
卷的序列号是 DE34-ED00
E:\Documents\Lua-Projs\SVN\ScriptsWireE2 的目录
08-03-2016 18:25 <DIR> .
08-03-2016 18:25 <DIR> ..
17-03-2016 18:15 <DIR> Bridges
07-03-2016 18:21 11 558 license
07-03-2016 18:21 87 readme.md
2 个文件 11 645 字节
3 个目录 181 729 161 216 字节可用
true exit 0
程序耗时 0.06 秒 (pid: 8832)。
2018-08-28 08:48:25
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
不使用外部库是不可能实现的。你可以使用类似以下代码的方法:
os.execute("cd /usr/ && ls")