当我输入
时$ julia myprog.jl foo bar baz
在我的代码中,我可以访问字符串"foo", "bar", "baz"
吗?
我正在寻找与sys.argv
答案 0 :(得分:33)
啊,更多的网络搜索导致了正确的答案。关键字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
答案 1 :(得分:16)
一个更简单的例子:
#printargs.jl
的println(ARGS [2]);
将其作为
运行julia printargs.jl a b c d
B'/ P>
请注意,数组索引从1和 NOT 0开始。因此,ARGS [2]打印 b 而不是 c ,如同许多其他编程语言。
答案 2 :(得分:0)
https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea
如果您真的需要传给julia的确切参数,包括my_test_df = data.frame(char_val = "110,000.00")
my_test_spark = my_test_df %>% copy_to(sc, ., 'my_test_df_spark' )
my_test_spark
# Source: spark<my_test_df_spark> [?? x 1]
# char_val
# <chr>
# 1 110,000.00
my_test_spark %>%
mutate(my_new_char = regexp_replace(char_val, ',','')) %>%
mutate(my_numeric = as.numeric(my_new_char)) %>%
head
# # Source: spark<?> [?? x 3]
# char_val my_new_char my_numeric
# * <chr> <chr> <dbl>
# 1 110,000.00 110000.00 110000
,则可以使用Windows的解决方法。查看-e
,可以将其解压缩到Linux。 Mac没有相同的/proc/PID/cmdline
选项,因此询问/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
。
答案 3 :(得分:0)
julia> Pkg.add("ArgParse")
https://argparsejl.readthedocs.io/en/latest/argparse.html