Chủ đề nói tất cả. Tôi muốn biết nếu thông dịch viên máy chủ của tôi đang chạy Lua 5.2 hoặc 5.1Trong Lua, có chức năng nào sẽ cho tôi biết phiên bản hiện tại tôi đang chạy không?
Trả lời
Có toàn cầu _VERSION biến (một chuỗi):
print(_VERSION)
-- Output
Lua 5.2
UPD:
Các phương pháp khác để phân biệt giữa Phiên bản 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
giữ phiên bản thông dịch viên. Kiểm tra manual để tham khảo.
Nếu bạn cũng cần chữ số thứ ba trong phiên bản Lua (không có sẵn trong _VERSION
), bạn cần phải phân tích đầu ra của lệnh lua -v
trên dòng lệnh.
Đối với các nền tảng hỗ trợ io.popen kịch bản này sẽ làm các trick, nhưng chỉ khi kịch bản được điều hành bởi người phiên dịch độc lập (không có trong chế độ tương tác) .IOW các arg
bảng toàn cầu phải được xác định:
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)')
Lưu ý rằng lua -v
viết trên stderr
trên Windows (cho Linux tôi không biết), vì vậy command
cho io.popen (mà chỉ chụp stdout
) phải chuyển hướng stderr
để stdout
và cú pháp là nền tảng cụ thể.
Chữ số thứ ba xác định lỗi khác nhau- sửa các bản phát hành mà không thay đổi chức năng. Có vẻ như vô nghĩa để kiểm tra chúng. – lhf
@lhf nói chung tôi hoàn toàn đồng ý, nhưng đối với những nhu cầu đặc biệt đó là một mẹo hữu ích để biết. Ví dụ. nói rằng bạn muốn khám phá xem tập lệnh của bạn có được chạy bởi một thông dịch viên có một bản vá cụ thể được áp dụng hay không. Bạn có thể chạy tập lệnh trên hệ thống không thuộc quyền kiểm soát của mình, vì vậy bạn không biết liệu có phải một giải pháp mã phải được sử dụng hay không). Nhưng tôi thừa nhận nó là một chút về bên của nitpicker :-) –
Trên Linux ''lua -v'' viết để' stdout' với Lua 5.2 nhưng để 'stderr' với Lua 5.1, nhưng kể từ cú pháp cho chuyển hướng là tương tự trong shell (Bourne), bạn có thể sử dụng cùng một chuỗi lệnh trên Linux và Windows (và gần như chắc chắn trên OS X). –
- 1. Phiên bản Ruby nào tôi thực sự đang chạy?
- 2. Làm cách nào để biết tôi đang chạy phiên bản git nào?
- 3. Làm cách nào để biết phiên bản WCF nào tôi đang chạy?
- 4. Làm cách nào để biết tôi đang chạy phiên bản reportlab nào?
- 5. Làm cách nào để biết tôi đang chạy phiên bản Doctrine nào?
- 6. Làm cách nào để biết phiên bản Cassandra tôi đang chạy?
- 7. Gọi chức năng Lua mà không thực hiện kịch bản
- 8. Trang web có thể biết nếu tôi đang chạy một bản người dùng không? Ví dụ:
- 9. Orchard CMS - cách biết phiên bản nào tôi hiện đang chạy và cách tốt nhất để nâng cấp
- 10. Tải phiên bản .NET CLR hiện tại khi đang chạy?
- 11. Làm cách nào để biết tôi đang sử dụng phiên bản OpenGL nào?
- 12. Tôi đang sử dụng phiên bản nào của C++?
- 13. Trình mô tả tập tin java của tôi sẽ "xấu" và tôi không biết tại sao
- 14. Làm cách nào để biết tôi đang sử dụng phiên bản servlet và JSP nào?
- 15. Chức năng tạo trong Lua
- 16. Làm cách nào để biết tập lệnh Perl của tôi có đang chạy trong Windows không?
- 17. PHP có chức năng phát hiện hệ điều hành đang chạy không?
- 18. Làm cách nào để biết liệu tôi có đang chạy từ JRuby và Ruby không?
- 19. Có cách nào để có được chức năng hiện tại từ bên trong chức năng hiện tại không?
- 20. Làm thế nào tôi có thể biết tôi đang sử dụng x64 hay x86 bằng .NET?
- 21. Làm cách nào để biết tôi đang sử dụng phiên bản Symfony nào?
- 22. Tôi có thể xác định xem chức năng PowerShell có đang chạy như một phần của đường ống không?
- 23. Tôi có thể chạy thử nghiệm tích hợp và chức năng của grails đối với máy chủ đang chạy không?
- 24. GHCi có thể cho tôi biết loại chức năng Haskell cục bộ không?
- 25. JavaScript, không biết tôi đang làm gì
- 26. Tôi đang sử dụng phiên bản CodeIgniter nào?
- 27. iPhone - Làm thế nào tôi có thể phát hiện thiết bị đang chạy một bản dựng adhoc của ứng dụng của tôi tại thời gian chạy
- 28. Làm cách nào để biết phiên bản Sybase nào đang chạy
- 29. Tôi đang sử dụng phiên bản XPath và XSLT nào ..?
- 30. Calling Lua chức năng
Ah ... có một biến toàn cầu được gọi là _VERSION: – henryaz