2015-08-24 52 views
2

我想在下面的代码使用输入path在文件路径使用环境变量

File.exists?(File.expand_path(path)) 

我可以使用环境变量在path,又该语法是什么?

+0

不太清楚你的意思。你想要什么路?你的意思是加载路径?这是一组目录。 – sawa

+0

抱歉不清楚。这就是我的意思:假设我有一个环境变量MY_VAR,并且我希望'path'为'%MY_VAR%/ bin'。这个语法不起作用,'$ MY_VAR/bin'也不行。是否有不同的语法应该工作? –

+0

'ENV ['MY_VAR']',这是你的意思吗? –

回答

2

您可以使用标准的Ruby字符串插值(虽然它是一个有点罗嗦)

path = "log/#{ENV['RAILS_ENV']}.log" # or whatever 
# >> "log/development.log" 
+0

谢谢!这是唯一适用于我的解决方案,因为我不能修改其余的代码,我只能使用'path'的内容来玩。 –

1

要展开的环境变量,你应该做你自己:

def expand_env(str) 
    str.gsub(/\$([a-zA-Z_][a-zA-Z0-9_]*)|\${\g<1>}|%\g<1>%/) { ENV[$1] } 
end 

expand_env("${SHELL}:%USER%:$PAGER") 
# => "/bin/bash:amadan:less" 

(包括Windows风格和Unix风格的支持,但只有基本的替代,而不是任何疯狂的东西,是bash能够)。

1

对于便携性,它可能是最好使用File::joinENV哈希:

File.exists?(File.join(ENV['MY_VAR'],'bin')) 
相关问题