有没有办法用REPL中的参数运行julia脚本?

时间:2017-07-10 14:47:20

标签: julia

我可以使用Powershell的参数运行julia脚本 hometeamPositions =['Goalkeeper','Midfielder','Defender','Defender','Defender','Midfielder','Midfielder','Midfielder','Midfielder','Forward','Forward','Goalkeeper','Defender','Defender','Midfielder','Midfielder','Forward','Forward'] hometeamPlayers = ['S. P. Brown','C. Winchester','M. Onariase','W. Boyle','J. Cranston','H. Pell','J. Rowe','K. Storer','B. Waters','D. Wright','D. Holman','R. Lovett','J. Barthram','T. Plavotic','J. Munns','L. Davis','K. Wootton','J. Dayton'] 。我可以使用> julia test.jl 'a' 'b'从REPL运行脚本,但include("test.jl")只接受一个参数 - 脚本的路径。

从使用iunclude开始,似乎它将脚本作为代码块运行,所有变量都引用当前(?)范围,因此如果我在REPL中明确重新定义include变量,它会抓住它并显示相应的脚本结果:

ARGS

然而,这给出了重新定义>ARGS="c","d" >include("test.jl") # prints its arguments in a loop c d 的警告,并且似乎不是这样做的预期方式。有没有其他方法从REPL(或从另一个脚本)运行脚本,同时明确说明其参数?

2 个答案:

答案 0 :(得分:4)

您可能不想通过include运行自包含脚本。有两种选择:

  1. 如果脚本不在你的控件中并且从命令行调用它是规范界面,只需在单独的Julia进程中调用它。 run(`$JULIA_HOME/julia path/to/script.jl arg1 arg2`)。有关详细信息,请参阅running external commands

  2. 如果您可以控制脚本,那么将它分成两部分可能更有意义:类似于库的文件,它只定义了Julia函数(但不运行任何函数)分析)和一个命令行文件,它解析参数并调用库定义的函数。您现在可以include编写命令行界面和第二个脚本,或者更好地使类似库的文件成为一个完整的package

答案 1 :(得分:1)

这个解决方案不干净或朱莉娅风格的服务。但如果你坚持:

要在弄乱ARGS时使用原始ARGS但要改变其内容,以避免出现警告。如下所示:

empty!(ARGS)
push!(ARGS,"argument1")
push!(ARGS,"argument2")

include("file.jl")

这个问题也与@AlexanderMorley所指出的juliapassing-argument-to-the-includefile-jl重复或相关。