Sto eseguendo uno script Torch dalla mia shell Linux, con il comando th
. Questo script torcia richiede due parametri di input:Torcia, come eseguire uno script con "dofile" e parametri di input?
th torch_script.lua input_parameter1 input_parameter2
ora mi piacerebbe per eseguire questo script attraverso il guscio della torcia. Per fare questo, devo usare il comando dofile
. Ma in questo caso, non so come passare i parametri di input input_parameter1
e input_parameter2
.
In Torch, come passare alcuni parametri di input al comando di esecuzione dofile
?
EDIT: Ecco il codice che sto cercando di eseguire. Io non sono in grado di funzionare in modo corretto, forse mi può dire il motivo per cui il contenuto
external_command.lua:
local arg = arg or {...}
input_parameter = arg[1]
print("input_parameter ".. input_parameter);
Sul guscio:
$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 : Ho provato la soluzione pubblicata da TonyHsu, ma non funziona comunque. Ecco cosa sto facendo.
definisco una funzione runfile()
in uno script chiamato runfile.lua
che contiene il codice seguente:
function runfile(scriptName, input)
opt = nil
arg = input
dofile(scriptName)
end
Poi utilizzare lo script external_command.lua
che precedentemente definito come parametro di input scriptName
per questa funzione:
th> scriptName = "external_command.lua"
th> require './runfile.lua'
th> runfile(scriptName, "Hello world");
Sfortunatamente, anche in questo caso viene visualizzato un messaggio di errore:
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
Usa 'loadfile' invece di' load' –
Grazie @EgorSkriptunoff ma non funziona lo stesso. Stesso errore ... –
Ehi c'è qualcuno in grado di aiutare? –