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