Lua os.execute devuelve valor
shellexecute (4)
El os.capture
de Lua devuelve toda la salida estándar, por lo que se devolverá a esa variable.
Ejemplo:
local result = os.capture("echo hallo")
print(result)
Impresión:
hallo
¿Es posible leer lo siguiente de la variable local en Lua?
local t = os.execute("echo ''test''")
print(t)
Solo quiero lograr esto: cualquier cosa que se ejecute a través de ox.execute
y devolverá cualquier valor, me gustaría usarlo en Lua; por ejemplo, echo ''test''
dará como resultado una test
en la línea de comandos de bash - es posible obtener ¿El valor devuelto ( test
en este caso) a la variable local de Lua?
Lo siento, pero esto es imposible. Si el programa echo sale con éxito, devolverá 0. Este código de retorno es lo que la función os.execute () obtiene y devuelve también.
if 0 == os.execute("echo ''test''") then
local t = "test"
end
Esta es una forma de conseguir lo que quieres, espero que te ayude.
Otro consejo para obtener el código de retorno de una función es la referencia de Lua. Lua-Reference/Tutorial
Puedes usar io.popen()
lugar. Esto devuelve un identificador de archivo que puede utilizar para leer la salida del comando. Algo como lo siguiente puede funcionar:
local handle = io.popen(command)
local result = handle:read("*a")
handle:close()
Tenga en cuenta que esto incluirá la nueva línea final (si existe) que emite el comando.
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