lua shellexecute

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