LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Прикидываем, как будет выглядеть работа с пайпланами:

local sh = require("shellua") -- или как назовём

-- Простой пайплайн
sh.cmd("ls", "-la")
  :pipe("grep", "lua")
  :pipe("wc", "-l")
  :run()

-- С редиректами
sh.cmd("cat")
  :stdin("/etc/passwd")
  :pipe("sort")
  :stdout("sorted.txt")
  :run()

-- Fork с lua-функцией
sh.fork(function()
    for i = 1, 100 do
      print(i)
    end
  end)
  :pipe("grep", "[13579]$")
  :run()

-- Сжатие содержимого переменной без блокировки основного процесса
local handle = sh
  .printf("%s", bigtext)
  :pipe("gzip", "-9")
  :stdout("/tmp/tmp-1.gz")
  :spawn()
foo() -- выполняем еще какую-то работу параллельно
handle.wait()

Исходная версия wandrien, :

Прикидываем, как будет выглядеть работа с пайпланами:

local sh = require("shellua") -- или как назовём

-- Простой пайплайн
sh.cmd("ls", "-la")
  :pipe("grep", "lua")
  :pipe("wc", "-l")
  :run()

-- С редиректами
sh.cmd("cat")
  :stdin("/etc/passwd")
  :pipe("sort")
  :stdout("sorted.txt")
  :run()

-- Или можно сократить имена
sh.cmd("cat")
  :in("/etc/passwd")
  :pipe("sort")
  :out("sorted.txt")
  :run()


-- Fork с lua-функцией
sh.fork(function()
    for i = 1, 100 do
      print(i)
    end
  end)
  :pipe("grep", "[13579]$")
  :run()

-- Сжатие содержимого переменной без блокировки основного процесса
local handle = sh
  .printf("%s", bigtext)
  :pipe("gzip", "-9")
  :stdout("/tmp/tmp-1.gz")
  :spawn()
foo() -- выполняем еще какую-то работу параллельно
handle.wait()