主题说这一切。我想知道如果我的主机解译正在运行的Lua 5.2或5.1在Lua中,有没有一个函数会告诉我当前正在运行的是哪个版本?
回答
有全局变量_VERSION(字符串):
print(_VERSION)
-- Output
Lua 5.2
UPD:
其他方法区别开来Lua版本:
if _ENV then
-- Lua 5.2
else
-- Lua 5.1
end
if 9^33 == 27^22 then -- this check is valid for x86/x64 only
-- vanilla Lua
else
-- LuaJIT
end
_VERSION
包含解释器版本。检查manual以供参考。
如果您还需要Lua版本中的第三个数字(在_VERSION
中不可用),则需要在命令行上解析命令lua -v
的输出。
对于支持io.popen这个脚本会做的伎俩平台,但前提是脚本由独立的解释(不是在交互模式).IOW必须定义arg
全局表运行:
local i_min = 0
while arg[ i_min ] do i_min = i_min - 1 end
local lua_exe = arg[ i_min + 1 ]
local command = lua_exe .. [[ -v 2>&1]] -- Windows-specific
local fh = assert(io.popen(command))
local version = fh:read '*a'
fh:close()
-- use version in the code below
print(version)
print(version:match '(%d%.%d%.%d)')
注意lua -v
写在stderr
在Windows(对于Linux,我不知道),所以command
为io.popen(只捕获stdout
)必须重定向到stderr
和stdout
的语法是特定于平台。
第三位数字表示不同的bug-修复版本而不改变功能。测试这些似乎毫无意义。 – lhf 2013-08-19 00:32:18
@lhf在一般情况下,我完全同意,但对于特殊需要,这是一个有用的技巧。例如。假设你想要发现你的脚本是由一个应用了特定补丁的解释程序运行的,还是一个较旧的脚本(也许你必须在一个不受你控制的系统上运行脚本,所以你不知道在该代码必须使用或不)。但我承认它在nitpicker方面有点:-) – 2013-08-19 00:43:01
在Linux上''lua -v''使用Lua 5.2写入'stdout',但使用Lua 5.1写入'stderr',但由于重定向的语法是在(Bourne)shell中相同,您可以在Linux和Windows上使用相同的命令字符串(并且几乎可以肯定在OS X上)。 – 2014-09-27 14:33:45
- 1. 是否有一个命令会告诉我我在哪个屏幕/ tmux会话?
- 2. 我有一个运行时警告,当我在我的脚本
- 3. 有没有一种方法可以告诉某个#define正在使用.Net Framework的哪个版本
- 4. 有没有办法告诉我连接到哪个版本的Team Foundation Server?
- 5. 哪个PHP版本当前正在运行5.2.15或5.3.4?
- 6. JS:有没有办法告诉哪个对象叫做函数?
- 7. 有没有办法告诉iOS要在模拟器上放哪个版本?
- 8. javascript调试 - 有没有办法告诉哪些函数正在执行?
- 9. 当我没有告诉它是一个表中的粗体文本
- 10. 在斯卡拉,有没有办法告诉你正在运行哪个执行上下文?
- 11. 有没有办法告诉我的UIView从哪个nib醒来?
- 12. 有没有办法检查一个函数是否正在jQuery中运行?
- 13. 为什么SQLite告诉我“没有当前行”?
- 14. 告诉哪个ruby on rails项目正在运行
- 15. 在Apereo cas中,有没有一个表显示哪个版本的cas-client支持哪个版本的cas-server
- 16. 有没有方法可以告诉我的进程中哪些线程正在运行?
- 17. 我如何知道我正在运行哪个WPF版本?
- 18. 如果我在1个php文件中有2个函数,如何告诉ajax哪个函数发送POST?
- 19. diff工具是告诉我是有区别的,我没有看到一个
- 20. 我正在运行哪个版本的CockroachDB?
- 21. 我正在运行哪个版本的SQL Server?
- 22. 我能告诉如果ado.net的DbCommand是查询还是没有(在执行前)
- 23. *哪个版本的框架正在运行*和*哪个版本的运行时正在运行*之间有什么区别?
- 24. 有人能告诉我为什么这个bash脚本不会运行吗?
- 25. 程序来告诉浏览器正在运行哪些脚本?
- 26. 我可以告诉Boost.MPI使用Boost.Serialization的哪个类版本吗?
- 27. 如何判断我正在运行哪个WCF版本?
- 28. 我如何知道当前正在运行的node.js版本?
- 29. 告诉jQuery哪个(唯一的)div在
- 30. 有没有办法告诉ocamlbuild运行我的文件,而不是只生成一个可执行文件?
啊......有一个全局变量叫_VERSION: – henryaz 2013-04-27 21:58:38