gpt4 book ai didi

lua - 如何使用lua构造读写管道?

转载 作者:行者123 更新时间:2023-12-03 20:48:17 27 4
gpt4 key购买 nike

我想做相当于:

foo=$(echo "$foo"|someprogram)


在lua中-即,我有一个包含一堆文本的变量,我想通过一个过滤器运行它(发生在python中)。

有什么提示吗?

补充:真的想在不使用临时文件的情况下做到这一点

最佳答案

只要您的Lua支持io.popen,此问题就很容易。该解决方案与您概述的完全相同,除了需要一个类似以下功能的函数来代替$(...)

function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end


然后你可以打电话

local foo = ...
local cmd = ("echo $foo | someprogram"):gsub('$foo', foo)
foo = os.capture(cmd)


我一直在做这样的事情。这是形成命令的相关有用功能:

local quote_me = '[^%w%+%-%=%@%_%/]' -- complement (needn't quote)
local strfind = string.find

function os.quote(s)
if strfind(s, quote_me) or s == '' then
return "'" .. string.gsub(s, "'", [['"'"']]) .. "'"
else
return s
end
end

关于lua - 如何使用lua构造读写管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242572/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com