65 votes

Valeur de retour Lua os.execute

Est-il possible de lire ce qui suit à partir de la variable locale en 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 renverra 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 renvoyée ( test dans ce cas) dans la variable locale Lua ?

120voto

Kevin Ballard Points 88866

Vous pouvez utiliser io.popen() 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) émise par la commande.

4voto

rhomobi Points 59
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

-6voto

user5804653 Points 7

Le os.capture Lua renvoie toutes les sorties standard, il sera donc renvoyé dans cette variable.

Exemple:

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

Impression:

 hallo

-20voto

blastmaster Points 13

Pardon, mais c'est impossible. Si le programme echo se termine avec succès, il renverra 0. Ce code de retour est ce que la fonction os.execute() obtient et renvoie également.

 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 aidera.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X