在Fabric中使用环境变量

时间:2014-02-06 06:14:59

标签: python bash fabric cd

假设:

export TEST=/somewhere

我想使用:

运行命令/somewhere/program
with cd('$TEST'):
  run('program')

但是,这不起作用,因为$被转义。

有没有办法在Fabric cd()调用中使用环境变量?

3 个答案:

答案 0 :(得分:4)

根据@AndrewWalker的建议,这是一个更紧凑的解决方案,对我有用(据我所知,结果是一样的):

with cd(run("echo $TEST")):
  run("program")

但我决定采用(非常轻微)更简洁但又可读的解决方案:

run('cd $TEST && program')

第二种解决方案,如果我是正确的,会产生相同的结果。

答案 1 :(得分:2)

您可以使用echo

捕获值
testdir = str(run("echo $TEST"))
with cd(testdir):
    run("program")

答案 2 :(得分:0)

或者:

import os

def my_task():
    with lcd(os.environ['TEST_PATH']):
        local('pwd')
也可以使用

os.getenv['TEST_PATH'](默认情况下,可选)

帽子提示:Send bash environment variable back to python fabric