Подтвердить что ты не робот

Доступ к аргументам командной строки в Julia

Когда я печатаю

$ julia myprog.jl foo bar baz

Где в моем коде я могу перейти к строкам "foo", "bar", "baz"?

Я ищу эквивалент Python sys.argv

4b9b3361

Ответ 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.