主題說這一切。我想知道如果我的主機解譯正在運行的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