Julia 使用环境变量运行外部程序:不要插入 $

AnH*_*ann 6 julia

我正在尝试从 Julia 运行 shell 命令,该命令需要将环境变量设置为某个特定值。我有两个问题:

  1. 如何设置 Julia
    run(command, args...; wait::Bool = true)命令使用的环境变量?

  2. 如何在$不插入的情况下将特殊符号传递给这个过程?我想测试该变量是否可用于我的程序。

到目前为止我做了什么:

假设我想定义一个环境变量FOO=bar并检查它是否可以在 shell 中使用 shell command 访问echo $FOO

为了防止 Julia 插值,$我已经像官方文档中解释的那样引用了它,但是 echo 正在打印$PATH而不是它的值。

所以FOO我得到了以下输出

julia> run(`echo '$FOO'`)
$FOO
Process(`echo '$FOO'`, ProcessExited(0))
Run Code Online (Sandbox Code Playgroud)

但会期待类似的东西

julia> run(`echo '$FOO'`)

Process(`echo '$FOO'`, ProcessExited(0))
Run Code Online (Sandbox Code Playgroud)

如果FOO未定义

julia> run(`echo '$FOO'`)
bar
Process(`echo '$FOO'`, ProcessExited(0))
Run Code Online (Sandbox Code Playgroud)

如果该值设置为bar.

Eng*_*ero 1

查看有关环境变量的 Julia 文档。您可以使用以下命令设置环境变量:

julia> ENV["FOO"] = "bar"
"bar"
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令检索环境变量的值:

julia> ENV["FOO"]
"bar"
julia> ENV["PATH"]
"really long string of my path"
Run Code Online (Sandbox Code Playgroud)

正如您已经说过的,您可以$通过单引号run命令的该部分来避免解释 the 。我不完全确定你在那里寻找什么。