Ich führe ein Torch-Skript aus meiner Linux-Shell mit dem Befehl th
aus. Diese Fackel Skript nimmt zwei Eingangsparameter:Fackel, wie ein Skript mit "Dofile" und Eingabeparameter ausführen?
th torch_script.lua input_parameter1 input_parameter2
Nun möchte Ich mag dieses Skript durch die Fackel Shell auszuführen. Um dies zu tun, muss ich den Befehl dofile
verwenden. Aber in diesem Fall kann ich die Eingabeparameter input_parameter1
und input_parameter2
nicht übergeben.
In Torch, wie einige Eingabeparameter an den dofile
Ausführungsbefehl übergeben?
EDIT: Hier ist der Code, den ich zu laufen bin versucht. Ich bin nicht in der Lage richtig zu laufen, vielleicht können Sie mir sagen, warum
external_command.lua Inhalt:
local arg = arg or {...}
input_parameter = arg[1]
print("input_parameter ".. input_parameter);
Auf der Schale:
$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
EDIT 2 : Ich habe die Lösung von TonyHsu ausprobiert, aber es funktioniert sowieso nicht. Hier ist was ich mache.
I definieren eine Funktion runfile()
in einem Skript runfile.lua
genannt, das den folgenden Code enthält:
function runfile(scriptName, input)
opt = nil
arg = input
dofile(scriptName)
end
Dann verwende ich die external_command.lua
Skript, das ich zuvor als scriptName
Eingabeparameter definiert für diese Funktion:
th> scriptName = "external_command.lua"
th> require './runfile.lua'
th> runfile(scriptName, "Hello world");
Leider bekomme ich auch in diesem Fall einen Fehler:
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
Verwenden 'loadfile' statt' load' –
Dank @EgorSkriptunoff, aber es funktioniert nicht das gleiche. Gleicher Fehler ... –
Hey, kann da jemand helfen? –