Подтвердить что ты не робот

Возвращаемое значение Lua os.execute

Можно ли читать следующую локальную переменную в Lua?

local t = os.execute("echo 'test'")
print(t)

Я просто хочу добиться этого: что бы ни было выполнено через ox.execute и вернет любое значение, я бы хотел использовать его в Lua - например, echo 'test' выводит test в командной строке bash - возможно ли вернуть возвращаемое значение (test в этом случае) к локальной переменной Lua?

4b9b3361

Ответ 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