需要为back-ticks命令设置环境var

ako*_*nsu 4 ruby shell scripting

如何将环境变量传递给我使用Kernel#systemet al 执行的shell命令?

说,我想跑

%x{git checkout -f}
Run Code Online (Sandbox Code Playgroud)

但是这个命令依赖于环境变量$GIT_WORK_TREE.我该怎么设置呢?

the*_*Man 7

您应该能够在ENV调用子shell之前在Ruby的哈希中设置变量:

ENV['GIT_WORK_TREE'] = 'foo'
`echo $GIT_WORK_TREE`
Run Code Online (Sandbox Code Playgroud)

应该返回"foo".

有关ENV[]=更多信息,请参阅文档.


[1] (pry) main: 0> ENV['GIT_WORK_TREE'] = 'foo'
"foo"
[2] (pry) main: 0> `echo $GIT_WORK_TREE`
"foo\n"