Доступ к аргументам командной строки в Julia
Когда я печатаю
$ julia myprog.jl foo bar baz
Где в моем коде я могу перейти к строкам "foo", "bar", "baz"
?
Я ищу эквивалент Python sys.argv
Ответы
Ответ 1
А, больше веб-поиска привело к правильному ответу. Ключевое слово 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
Ответ 2
Простейший пример:
# printargs.jl
Println (АРГС [2]);
Запустите его как
julia printargs.jl a b c d
б
Обратите внимание, что индекс массива начинается с 1 и NOT 0. Таким образом, ARGS [2] печатает b, а не c, как в случае многих других языков программирования.
Ответ 3
https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea
В случае, если вам действительно нужны точные аргументы, которые пришли к Джулии, включая -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
.
Ответ 4
julia> Pkg.add("ArgParse")
Документы на https://argparsejl.readthedocs.io/en/latest/argparse.html