假设:
export TEST=/somewhere
我想使用:
运行命令/somewhere/program
with cd('$TEST'):
run('program')
但是,这不起作用,因为$
被转义。
有没有办法在Fabric cd()
调用中使用环境变量?
答案 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']
(默认情况下,可选)