Tôi đang thực thi kịch bản lệnh Torch từ trình bao Linux của mình, với lệnh th
. kịch bản Torch này có hai tham số đầu vào:Ngọn đuốc, cách thực thi tập lệnh với "dofile" và thông số đầu vào?
th torch_script.lua input_parameter1 input_parameter2
Bây giờ tôi muốn chạy script này thông qua vỏ Torch. Để làm điều này, tôi phải sử dụng lệnh dofile
. Nhưng trong trường hợp này, tôi không biết cách chuyển các tham số đầu vào input_parameter1
và input_parameter2
.
Trong Torch, cách chuyển một số thông số đầu vào vào lệnh thực thi dofile
?
EDIT: Đây là mã mà tôi đang cố gắng chạy. Tôi không thể chạy nó đúng cách, có thể bạn có thể cho tôi biết tại sao nội dung
external_command.lua:
local arg = arg or {...}
input_parameter = arg[1]
print("input_parameter ".. input_parameter);
Trên vỏ:
$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 : Tôi đã thử các giải pháp được đăng bởi TonyHsu, nhưng nó không hoạt động anyway. Đây là những gì tôi đang làm.
tôi định nghĩa một hàm runfile()
trong một kịch bản gọi là runfile.lua
chứa đoạn mã sau:
function runfile(scriptName, input)
opt = nil
arg = input
dofile(scriptName)
end
Sau đó, tôi sử dụng external_command.lua
kịch bản mà trước đây tôi định nghĩa là tham số đầu vào scriptName
cho chức năng này:
th> scriptName = "external_command.lua"
th> require './runfile.lua'
th> runfile(scriptName, "Hello world");
Thật không may, trong trường hợp này tôi gặp lỗi:
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
Sử dụng 'loadfile' thay vì' tải' –
Cảm ơn @EgorSkriptunoff nhưng không hoạt động như cũ. Cùng một lỗi ... –
Hey có ai có thể giúp đỡ? –