我正在使用ruby 1.8.7补丁249.以下是将环境变量传递给我需要从我的ruby程序执行的shell命令的最佳/唯一方法吗?
fork do
ENV['A'] = 'A'
exec "/bin/bash -c 'echo $A'"
end
Process.wait
Run Code Online (Sandbox Code Playgroud)
Joh*_*rug 31
有一个非常简单的方法:
system({"MYVAR" => "42"}, "echo $MYVAR")
Run Code Online (Sandbox Code Playgroud)
所有这些都归功于Avdi:https://stackoverflow.com/a/8301399/171933
Dav*_*son 12
Ruby exec方法的文档似乎不完整,但它确实说有一个可选的第一个参数被调用env,所以可能是指定了环境.通过有根据的猜测和一些实验,我发现使用它的正确方法是这样的:
exec({"A"=>"A"}, "/bin/bash -c 'echo $A'")
Run Code Online (Sandbox Code Playgroud)
编辑1:对不起,不适用于旧版本的Ruby.
小智 1
我会用一行来做
exec "/bin/bash -c 'A=hello; echo $A'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19824 次 |
| 最近记录: |