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

有没有办法用REPL的参数运行julia脚本?,julia,Julia,我可以使用Powershell中的参数运行julia脚本,如>julia test.jl'a''b'。我可以使用include(“test.jl”)从REPL运行脚本,但是include只接受一个参数—脚本的路径 从使用include开始,它似乎以代码块的形式运行脚本,所有变量都引用当前(?)范围,因此如果我在REPL中显式地重新定义ARGS变量,它就会启动并显示相应的脚本结果: >ARGS="c","d" >include("test.jl") # prints its argum

我可以使用Powershell中的参数运行julia脚本,如
>julia test.jl'a''b'
。我可以使用
include(“test.jl”)
从REPL运行脚本,但是
include
只接受一个参数—脚本的路径

从使用
include
开始,它似乎以代码块的形式运行脚本,所有变量都引用当前(?)范围,因此如果我在REPL中显式地重新定义
ARGS
变量,它就会启动并显示相应的脚本结果:

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

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

这种解决方案不是干净的或朱丽叶式的做事方式。但如果你坚持:

为了避免在使用
ARGS
时出现警告,请使用原始的
ARGS
,但要修改其内容。例如:

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

include("file.jl")

这个问题也是重复的,或者与@AlexanderMorley所指出的有关。

这个解决方案不是干净的或者朱莉娅式的做事方式。但如果你坚持:

为了避免在使用
ARGS
时出现警告,请使用原始的
ARGS
,但要修改其内容。例如:

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

include("file.jl")

这个问题也是一个重复的问题,或者与@AlexanderMorley指出的问题相关。

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

  • 如果脚本不在您的控件中,并且从命令行调用它是规范接口,那么只需在单独的进程中调用它<代码>运行(`JULIA_HOME/JULIA path/to/script.jl arg1 arg2`)
  • 。有关更多详细信息,请参阅

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


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

  • 如果脚本不在您的控件中,并且从命令行调用它是规范接口,那么只需在单独的进程中调用它<代码>运行(`JULIA_HOME/JULIA path/to/script.jl arg1 arg2`)
  • 。有关更多详细信息,请参阅

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


  • 可能的重复如果没有为这些事情准备的方法,那么它就是。可能的重复如果没有为这些事情准备的方法,那么它就是。我的印象是
    清楚
    只是对worker的有效指令,在主进程中尝试它将抛出错误。(我不确定这一决定的理由是什么,但我想这很公平)。要“清除”这个特定场景中的ARGS,我只需
    pop直到它变为空。删除向量所有元素的正确函数是
    。我的印象是
    清楚
    只是对worker的有效指令,在主进程中尝试它将抛出错误。(我不确定这一决定的理由是什么,但我想这很公平)。要“清除”这个特定场景中的ARGS,我只需
    pop直到它变为空。删除向量所有元素的正确函数是