web-dev-qa-db-ja.com

Lua os.executeの戻り値

Luaのローカル変数から次を読み取ることは可能ですか?

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

私はこれを達成したいだけです:ox.executeを介して実行され、任意の値を返すものは何でも、Luaで使用したいと思います。たとえば、echo 'test'はbashコマンドでtestを出力します行-戻り値(この場合はtest)をLuaローカル変数に取得することは可能ですか?

34
Cyclone

代わりに io.popen() を使用できます。これは、コマンドの出力を読み取るために使用できるファイルハンドルを返します。次のようなものが機能する場合があります。

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

これには、コマンドが出力する末尾の改行(ある場合)が含まれることに注意してください。

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