ОК Мне нужно определить ОС системы из сценария Lua, но у Lua как таковой нет API для этого, поэтому я использую os.getenv() и запрашиваю переменные окружения. В Windows проверка переменной окружения «OS» дает мне имя ОС системы, но есть ли какая-то переменная, которая существует как в Windows, так и в большинстве вариантов Unix, которую можно проверить?Как определить ОС системы из сценария Lua?
ответ
В системе Unix, попробуйте os.capture 'uname', где os.capture определен ниже:
function os.capture(cmd, raw) local f = assert(io.popen(cmd, 'r')) local s = assert(f:read('*a')) f:close() if raw then return s end s = string.gsub(s, '^%s+', '') s = string.gsub(s, '%s+$', '') s = string.gsub(s, '[\n\r]+', ' ') return s end
Это поможет на всех разновидностях UNIX и на Mac OSX. Если это не удается, вы можете быть в системе Windows? Или проверьте os.getenv 'HOME'.
Unixes должен иметь переменную $ HOME (в то время как в Windows этого нет), поэтому вы можете ее проверить (после проверки переменной ОС пусто).
Я предполагаю, что если вам просто нужно обнаружение Windows/Unix, вы можете проверить файловую систему на наличие/etc или/bin или/boot каталогов. Кроме того, если вам нужно знать, какой дистрибутив это, большинство дистрибутивов Linux имеют небольшой файл в/etc, показывающий дистрибутив и версию, к сожалению, все они называют его по-разному.
Вы можете попробовать package.config:sub(1,1)
. Он возвращает разделитель пути, который является '\\'
на Windows и '/'
на Unix ...
Когда lua скомпилирован, он настроен несколько иначе, в зависимости от того, для какой операционной системы он скомпилирован.
Многие из строк, которые установлены в модуле «пакет», могут быть использованы для различения системы, для которой она была скомпилирована.
Например, когда lua загружает модули на основе C, которые распространяются как динамические библиотеки, он должен знать расширение, используемое для этих библиотек, которое отличается для каждой ОС.
Таким образом, для определения ОС вы можете использовать следующую функцию.
local BinaryFormat = package.cpath:match("%p[\\|/]?%p(%a+)")
if BinaryFormat == "dll" then
function os.name()
return "Windows"
end
elseif BinaryFormat == "so" then
function os.name()
return "Linux"
end
elseif BinaryFormat == "dylib" then
function os.name()
return "MacOS"
end
end
BinaryFormat = nil
- 1. Как я могу выполнить файл без Lua из сценария Lua?
- 2. Как выйти из выполнения сценария Lua
- 3. Как вызвать функции C++ из сценария Lua?
- 4. Как определить, какая ОС работает?
- 5. Как определить ОС
- 6. Добавление сценария выхода из системы
- 7. Как определить ОС из приложения silverlight?
- 8. Как отладить код сценария Lua?
- 9. Ошибка сценария Lua Msg_429
- 10. Ошибка сценария Lua os.date
- 11. Оптимизация сценария Lua
- 12. C++ Функция вызова из сценария Lua
- 13. вызов функций c из сценария lua
- 14. Lua скрипт - Кодирование сценария
- 15. Вызов сценария Lua из C: ошибки
- 16. Как определить версию ОС веб-сервера
- 17. Как определить версию Windows из сценария VB?
- 18. Как определить загрузку сервера Sybase из сценария
- 19. компиляция сценария lua для автономного исполняемого файла
- 20. Запуск сценария Lua в Docker
- 21. Получение системы и ОС Информация
- 22. Можно ли определить бит ОС из CPU?
- 23. Как получить процент выполнения сценария lua?
- 24. Определить подпись функции Lua из C API
- 25. Системные вызовы системы из сценария bash
- 26. Как удалить точный файл из файловой системы, передающей функции ОС?
- 27. Как определить функции в redis \ lua?
- 28. Извлечение Raw_Input из сценария запуска системы
- 29. Обнаружение последнего перезапуска системы из сценария NSIS
- 30. Выполнение сценария удаленной PowerShell из локальной системы
windows has = HOME = – 2012-10-20 01:20:07
В каждой проверенной версии Windows нет переменной среды HOME. Попробуйте выполнить «echo% HOME%» из командной строки. – 2012-10-21 08:09:31
Windows 7 (v 6.1, build 7601) имеет ДОМ, какую версию ОС вы проверяли? – 2012-10-21 08:15:30