Когда я делаю "os.execute" в Lua, консоль быстро всплывает, выполняет команду и затем закрывается. Но есть ли способ вернуть консольный вывод только с использованием стандартных библиотек Lua?
Вернуть вывод os.execute в Lua
Ответ 1
Я думаю, вам нужно это http://pgl.yoyo.org/luai/i/io.popen io.popen. Но он не всегда компилируется.
Ответ 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, а затем использовать функции ввода/вывода файлов языков, чтобы прочитать его.
Как я это сделал бы, если бы сам язык не обеспечивал захват выходов и ошибок строна.