在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我已经按照您的建议添加了一个示例。