LoginSignup
8
8

More than 5 years have passed since last update.

luaでlinuxのコマンドを実行する

Posted at

luaで外部コマンドの実行結果を取得する方法です。popenを使うとコマンドの結果がとれるようです。
文字列をテーブルに変換する処理がなかったので、splitを書いてみました。

sample.lua
function split(str, delim)                                                                                                                                    
        assert(str,  "文字列が設定されていません")
        assert(delim,"区切り文字がしていされていません")
        local pattern = "[^"..delim.."]*"..delim

        local result = {}
        for item in string.gmatch(str, pattern) do
                local tmp = item:gsub(delim,"")
                table.insert(result, tmp)
        end 
        return result
end

function getPid(name)
        local command='pidof '..name
        local commandResult = execCommand(command)
        local result = string.gsub(commandResult, "\n", "") 
        return  result
end

function getDirList(dirname)
        local command='find '..dirname..' -type d'
        local commandResult = execCommand(command)
        local result = string.gsub(commandResult, "\n", ",")
        return split(result, ",")
end

function execCommand(command)
        local handle = io.popen(command,"r")
        local content = handle:read("*all")
        handle:close()
        return content
end
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8