52

当我输入

$ julia myprog.jl foo bar baz

在我的代码中,我可以去哪里访问字符串"foo", "bar", "baz"

我正在寻找 Python 等价物sys.argv

4

4 回答 4

59

啊,更多的网络搜索导致了正确的答案。关键字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
于 2014-01-11T00:59:35.160 回答
29

一个更简单的例子:

#printargs.jl

println(ARGS[2]);

运行它

朱莉娅 printargs.jl abcd

b

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

于 2015-04-16T02:01:42.550 回答
5

julia> Pkg.add("ArgParse")https://argparsejl.readthedocs.io/en/latest/argparse.html 上的文档

于 2019-10-06T23:31:46.750 回答
1

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.

于 2019-07-16T17:41:17.133 回答