Ripristina l'output di os.execute in Lua
-
02-07-2019 - |
Domanda
Quando eseguo un " os.execute " in Lua, si apre rapidamente una console, esegue il comando, quindi si chiude. Ma c'è un modo per recuperare l'output della console usando solo le librerie Lua standard?
Soluzione
Penso che tu voglia questo http://pgl.yoyo.org/luai/i /io.popen io.popen. Ma non è sempre compilato in.
Altri suggerimenti
Se hai io.popen, questo è quello che uso:
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+Se non hai io.popen, presumibilmente popen (3) non è disponibile sul tuo sistema e sei nello yogurt profondo. Ma tutte le porte Lua unix / mac / windows avranno io.popen.
, '') s = string.gsub(s, '[\n\r]+', ' ') return s end
Se non hai io.popen, presumibilmente popen (3) non è disponibile sul tuo sistema e sei nello yogurt profondo. Ma tutte le porte Lua unix / mac / windows avranno io.popen.
Non conosco Lua in particolare, ma in genere puoi eseguire un comando come:
comd >comd.txt 2>&1
per acquisire l'output e l'errore nel file comd.txt, quindi utilizzare le funzioni I / O del file delle lingue per leggerlo.
È così che lo farei se il linguaggio stesso non fornisse l'acquisizione di output ed errori stanard.