Julia:找出是从 REPL 还是命令行运行

unt*_*gam 4 read-eval-print-loop julia

有没有办法确定 julia 脚本myprog.jl是通过命令行调用的julia myprog.jl还是通过 REPL调用的include("myprog.jl")

背景:我正在使用ArgParse.jl包,因为我无法从 REPL 传递命令行参数,所以我只想ARGS = "argA --optB 1 --flagC"在调用之前设置一个变量include("myprog.jl"),以获得与julia myprog.jl argA --optB 1 --flagC命令行相同的结果。为此,我需要知道程序是从命令行调用还是从 REPL 调用,这样我就可以编写类似

if called_from_repl
    parse_args(split(ARGS),s)
else
    parse_args(s)
end
Run Code Online (Sandbox Code Playgroud)

Prz*_*fel 7

isinteractive用于确定 Julia 是否正在运行交互式会话。

考虑下面的示例(我$用于命令行提示和julia>Julia REPL 提示)

$ more test.jl

println("interactive : $(isinteractive())")


$ julia test.jl
interactive : false
Run Code Online (Sandbox Code Playgroud)

现在让我们在 REPL 中运行相同的脚本:

julia> include("test.jl")
interactive : true
Run Code Online (Sandbox Code Playgroud)