gpt4 book ai didi

shell - Torch,如何执行带有 "dofile"和输入参数的脚本?

转载 作者:行者123 更新时间:2023-12-04 08:51:45 26 4
gpt4 key购买 nike

我正在从我的 Linux shell 执行 Torch 脚本,使用 th命令。此 Torch 脚本采用两个输入参数:
th torch_script.lua input_parameter1 input_parameter2
现在我想通过 Torch shell 运行这个脚本。为此,我必须使用 dofile命令。但是在这种情况下,我不知道如何传递输入参数input_parameter1input_parameter2 .

在 Torch 中,如何将一些输入参数传递给 dofile执行命令?

编辑 :这是我试图运行的代码。我无法正确运行它,也许您可​​以告诉我原因

external_command.lua 内容:

local arg = arg or {...} 
input_parameter = arg[1]
print("input_parameter ".. input_parameter);

在 shell 上:
$th
th> tempFunc = load "external_command.lua"
th> tempFunc("try")
[string "_RESULT={tempFunc("try")}"]:1: attempt to call global 'tempFunc' (a nil value)
stack traceback:
[string "_RESULT={tempFunc("try")}"]:1: in main chunk
[C]: in function 'xpcall'
/home/davide/torch/install/share/lua/5.1/trepl/init.lua:630: in function 'repl'
...vide/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:185: in main chunk
[C]: at 0x004064d0

编辑 2 : 我尝试了 TonyHsu 发布的解决方案,但它无论如何都不起作用。
这就是我正在做的事情。

我定义了一个函数 runfile()在名为 runfile.lua 的脚本中其中包含以下代码:
function runfile(scriptName, input)
opt = nil
arg = input
dofile(scriptName)
end

然后我使用 external_command.lua我之前定义为 scriptName 的脚本此函数的输入参数:
th> scriptName = "external_command.lua"
th> require './runfile.lua'
th> runfile(scriptName, "Hello world");

不幸的是,在这种情况下,我也收到一个错误:
external_command.lua:4: attempt to concatenate global 'input_parameter' (a nil value)
stack traceback:
external_command.lua:4: in main chunk
[C]: in function 'dofile'
/home/davide/torch/temp/runfile.lua:4: in function 'runfile'
[string "runfile(scriptName, "Hello world");"]:1: in main chunk
[C]: in function 'xpcall'
/home/davide/torch/install/share/lua/5.1/trepl/init.lua:648: in function 'repl'
...vide/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:185: in main chunk
[C]: at 0x004064d0

最佳答案

我认为诀窍是在全局变量“args”中传递参数。说,我在external_command.lua中有以下内容.

-- args has been set by the caller
if not args or #args == 0 then
print('no input_parameter')
else
print('#args = ' .. #args, 'input_parameter: ' .. args[1])
end

然后定义 runfile() 如下。
function runfile(f, ...)
local tmp = args -- save the original global args
args = table.pack(...)
dofile(f)
args = tmp -- restore args
end

我已经在 th 中测试过了。看起来像这样。
th> runfile('ext_command.lua', 10)
#args = 1 input_parameter: 10
[0.0002s]
th> runfile('ext_command.lua', 'a', 'b', 'c')
#args = 3 input_parameter: a
[0.0002s]

关于shell - Torch,如何执行带有 "dofile"和输入参数的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32995102/

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