在Julia中访问命令行参数

在Julia中访问命令行参数,julia,Julia,当我打字的时候 $ julia myprog.jl foo bar baz 在我的代码中,哪里可以访问字符串“foo”、“bar”、“baz” 我正在寻找与Python相当的sys.argv啊,更多的网络搜索导致了正确的答案。关键字ARGS::Array{ASCIIString}包含命令行参数 下面是一个简单的例子 # cli.jl print(map(x->string(x, x), ARGS)) # Concatenate each arg onto itself and pri

当我打字的时候

$ julia myprog.jl foo bar baz
在我的代码中,哪里可以访问字符串
“foo”、“bar”、“baz”


我正在寻找与Python相当的
sys.argv

啊,更多的网络搜索导致了正确的答案。关键字
ARGS::Array{ASCIIString}
包含命令行参数

下面是一个简单的例子

# cli.jl

print(map(x->string(x, x), ARGS))  # Concatenate each arg onto itself and print
让我们在命令行测试它:

$ julia cli.jl a b c
aa
bb
cc
一个简单的例子:

#printargs.jl

println(ARGS[2])

以同样的方式运行它

julia printargs.jl a b c d

b

请注意,数组索引从1开始,而不是从0开始。因此,ARGS[2]在许多其他编程语言中打印b而不是c。

如果您确实需要julia提供的确切参数,包括
-e
,那么Windows有一个解决方法。查看
/proc/PID/cmdline
,您可以在linux中提取它。Mac没有相同的
/proc
选项,因此询问
ps
效果很好

if Sys.iswindows()
    mycmd = unsafe_string(ccall(:GetCommandLineA, Cstring, ()))
elseif Sys.isapple()
    mycmd = strip(read(`/bin/ps -p $(getpid()) -o command=`, String))
elseif Sys.isunix()
    mycmd = replace(read(joinpath("/", "proc", string(getpid()), "cmdline"), String), "\x00"=>" ")
else
    mycmd = string(Base.julia_cmd()) * join(map(x->" " * x, ARGS))
end
但是典型的用例您只需要查看
ARGS

julia>Pkg.add(“ArgParse”)

位于

的文档请您提供一个最低限度的工作示例,然后接受您自己的答案好吗?@juliohm我已经按照您的建议添加了一个示例。