web-dev-qa-db-fra.com

Lua os.execute 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 y parvenir: tout ce qui est exécuté via le ox.execute et retournera n'importe quelle valeur, je voudrais l'utiliser dans Lua - par exemple echo 'test' affichera test dans la ligne de commande bash - est-il possible d'obtenir la valeur retournée (test dans ce cas) à la variable locale Lua?

34
Cyclone

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 cela inclura la nouvelle ligne de fin (le cas échéant) que la commande émet.

72
Lily Ballard
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
rhomobi