Возвращаемое значение Lua os.execute
Можно ли читать следующую локальную переменную в Lua?
local t = os.execute("echo 'test'")
print(t)
Я просто хочу добиться этого: что бы ни было выполнено через ox.execute
и вернет любое значение, я бы хотел использовать его в Lua - например, echo 'test'
выводит test
в командной строке bash - возможно ли вернуть возвращаемое значение (test
в этом случае) к локальной переменной Lua?
Ответы
Ответ 1
Вместо этого вы можете использовать io.popen()
. Это возвращает дескриптор файла, который вы можете использовать для чтения вывода команды. Может работать следующее:
local handle = io.popen(command)
local result = handle:read("*a")
handle:close()
Обратите внимание, что это будет включать в себя завершающую новую строку (если есть), которую команда испускает.
Ответ 2
function GetFiles(mask)
local files = {}
local tmpfile = '/tmp/stmp.txt'
os.execute('ls -1 '..mask..' > '..tmpfile)
local f = io.open(tmpfile)
if not f then return files end
local k = 1
for line in f:lines() do
files[k] = line
k = k + 1
end
f:close()
return files
end
Ответ 3
Lua os.capture
возвращает весь стандартный вывод, поэтому он будет возвращен в эту переменную.
Пример:
local result = os.capture("echo hallo")
print(result)
Печать
hallo
Ответ 4
К сожалению,
но это невозможно.
Если эхо-программа с успехом выйдет с успехом, она вернет 0. Этот код возврата - это то, что также возвращает и возвращает функция os.execute().
if 0 == os.execute("echo 'test'") then
local t = "test"
end
Это способ получить то, что вы хотите, я надеюсь, что это вам поможет.
Другим советом для получения кода возврата функции является ссылка Lua.
Lua-Reference/Tutorial