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

Вернуть вывод os.execute в Lua

Когда я делаю "os.execute" в Lua, консоль быстро всплывает, выполняет команду и затем закрывается. Но есть ли способ вернуть консольный вывод только с использованием стандартных библиотек Lua?

4b9b3361

Ответ 2

Если у вас есть io.popen, то это то, что я использую:

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

Если у вас нет io.popen, то предположительно popen (3) недоступен в вашей системе, и вы находитесь в глубоком йогурте. Но все порты unix/mac/windows Lua будут иметь io.popen.

Ответ 3

Я не знаю о Lua специально, но вы можете вообще запустить команду как:

comd >comd.txt 2>&1

чтобы записать вывод и ошибку в файл comd.txt, а затем использовать функции ввода/вывода файлов языков, чтобы прочитать его.

Как я это сделал бы, если бы сам язык не обеспечивал захват выходов и ошибок строна.