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

eph*_*ris 0 julia

我可以使用来自Powershell的参数运行julia脚本> julia test.jl 'a' 'b'。我可以使用REPL运行脚本,include("test.jl")iunclude只接受一个参数-脚本的​​路径。

从玩转来看,include它似乎将脚本作为代码块运行,并且所有变量都引用了current(?)范围,因此,如果我ARGS在REPL中显式重新定义变量,它将抓住并显示相应的脚本结果:

>ARGS="c","d"
>include("test.jl") # prints its arguments in a loop
c
d
Run Code Online (Sandbox Code Playgroud)

但是,这为重新定义提供了警告,ARGS并且似乎不是实现此目的的预期方式。有没有其他方法可以从REPL(或另一个脚本)运行脚本,同时明确说明其参数?

Mat*_* B. 5

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

  1. 如果该脚本不在您的控制范围内,并且从命令行调用该脚本是规范界面,则只需在单独的Julia进程中调用它即可。 run(`$JULIA_HOME/julia path/to/script.jl arg1 arg2`)。有关更多详细信息,请参见运行外部命令

  2. 如果您可以控制脚本,则将脚本分为两部分可能更有意义:一个只定义Julia函数(但不运行任何分析)的类库文件,以及一个解析后的命令行文件参数并调用库定义的函数。现在,无论是命令行界面还是您编写的第二个脚本都可以使用include该库,或者更好的是使该类库文件成为完整的软件包