gpt4 book ai didi

Lua 命令行字符串

转载 作者:行者123 更新时间:2023-12-04 20:57:29 25 4
gpt4 key购买 nike

假设我用这个命令调用 Lua:

luajit neuralnetwork.lua --satEpoch "somestring" --maxEpoch 50

如何从 Lua 访问相同的 cmd 行字符串?

我知道 arg 表,但它从原始命令字符串中删除了所有引号,因此难以重建:

{
"--maxEpoch"
"--satEpoch"
"50"
"somestring"
[-1] : "luajit"
[0] : "examples/neuralnetwork.lua"
}

如果我能从 Lua 中将确切的字符串保存到一个文件中,我以后就可以轻松地再次调用它。

最佳答案

@peterpi 是正确的,shell 正在解释命令并因此去除引号。然而,为了让 shell 以与以前相同的方式解释命令,完全不需要重建命令。

对于简单的情况,将参数连接到脚本通常就足够了:

local command = table.concat(arg, ' ', -1, #arg)

如果引号实际上是必需的,这将失败,最常见的是当参数包含空格或 shell 字符时,因此引用所有内容很容易并且更健壮,但并不漂亮。

这是一个 Lua 模式示例,用于检查特殊 (bash) shell 字符和空格,以确定是否需要引号以及需要哪些引号。它可能不完整,但它处理文件名、大多数字符串和数字作为参数。

local mod_arg = { }
for k, v in pairs(arg) do
if v:find"'" then
mod_arg[k] = '"'..v..'"'
elseif v:find'[%s$`><|#]' then
mod_arg[k] = "'"..v.."'"
else
mod_arg[k] = v
end
end
local command = table.concat(mod_arg, ' ', -1, #mod_arg)
print(command)

关于Lua 命令行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379841/

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