当我输入
$ julia myprog.jl foo bar baz
在我的代码中,我可以去哪里访问字符串"foo", "bar", "baz"
?
我正在寻找 Python 等价物sys.argv
当我输入
$ 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]);
运行它
朱莉娅 printargs.jl abcd
b
请注意,数组索引从 1 开始,而不是0。因此,ARGS[2] 打印b而不是c,就像许多其他编程语言一样。
julia> Pkg.add("ArgParse")
https://argparsejl.readthedocs.io/en/latest/argparse.html
上的文档
https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea
如果您确实需要 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
.