Lua os.exécuter valeur de retour

est-il possible de lire ce qui suit à partir de la variable locale dans Lua?

local t = os.execute("echo 'test'")
print(t)

je veux juste obtenir ceci: tout ce qui est exécutée par le biais de la ox.execute et se retournent aucune valeur, je voudrais l'utiliser en Lua par exemple echo 'test' sortie test dans la ligne de commande bash - est-ce possible d'obtenir la valeur retournée (test dans ce cas) à la variable locale Lua?

26
demandé sur Cyclone 2012-03-13 03:10:45

4 réponses

Vous pouvez utiliser io.popen() à la place. Cela renvoie un descripteur de fichier que vous pouvez utiliser pour lire la sortie de la commande. Quelque chose comme ce qui suit peut fonctionner:

local handle = io.popen(command)
local result = handle:read("*a")
handle:close()

notez que ceci inclura la nouvelle ligne de fuite (si elle existe) que la commande émet.

58
répondu Kevin Ballard 2012-03-12 23:24:55
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
4
répondu rhomobi 2012-10-29 02:44:07

Lua est os.capture retourne toute la sortie standard, ainsi elle sera retournée dans cette variable.

Exemple:

local result = os.capture("echo hallo")
print(result)

Impression:

hallo
-4
répondu user5804653 2016-01-18 10:05:10

Désolé, mais c'est impossible. Si le programme echo sort avec succès, il retournera 0. Cette code_retour est ce que le système d'exploitation.execute() de la fonction get et retourné trop.

if  0 == os.execute("echo 'test'") then 
    local t = "test"
end

C'est un moyen d'obtenir ce que vous voulez, j'espère que cela vous aide.

une autre astuce pour obtenir le code de retour d'une fonction est la référence Lua. Lua-Référence / Tutorial

-10
répondu blastmaster 2012-03-12 23:33:02