【发布时间】:2011-10-22 01:01:54
【问题描述】:
假设我有文件main.lua,在一个子目录中我有一系列我想运行的 Lua 脚本。有没有办法在普通的 Lua 中运行子目录中的所有脚本——也就是说,不需要加载任何外部模块或包?据我所知,require 和dofile 仅适用于单个文件,我希望能够执行类似require "subdir/*" 的操作。
【问题讨论】:
标签: lua
假设我有文件main.lua,在一个子目录中我有一系列我想运行的 Lua 脚本。有没有办法在普通的 Lua 中运行子目录中的所有脚本——也就是说,不需要加载任何外部模块或包?据我所知,require 和dofile 仅适用于单个文件,我希望能够执行类似require "subdir/*" 的操作。
【问题讨论】:
标签: lua
有没有办法在普通 Lua 中运行子目录中的所有脚本 - 即,无需加载任何外部模块或包?
没有。 Lua 被设计成一种嵌入式语言。因此,“vanilla Lua”非常小。它几乎没有基于文件系统的功能;无法遍历目录和模式匹配文件。
如果您认真考虑使用 Lua 作为一种 shell 脚本语言,那么您需要习惯使用 Lua 模块来完成工作。
【讨论】:
您可以访问 os.execute 吗?你能维护一个你想加载的模块列表吗?
如果你有一个完整的 Lua 解释器,就很容易做你想做的事。 (这里以 Windows 为例)
local f = io.popen("dir /b") for mod in f:lines() do require(mod) end
【讨论】: