首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Coding
V2EX  ›  Python

新手问一个关于 fabric 的问题

  •  
  •   laoyur · 2016-09-13 18:24:35 +08:00 · 1385 次点击
    这是一个创建于 1184 天前的主题,其中的信息可能已经有所发展或是发生改变。
    from fabric.api import *
    
    @task()
    def pi_test():
        run('VAR1=hehe')
        run('echo $VAR1')
    
    [[email protected]] Executing task 'pi_test'
    [[email protected]] run: VAR1=hehe
    [[email protected]] run: echo $VAR1
    [[email protected]] out: 
    [[email protected]] out: 
    
    Done.
    
    

    请问怎么才能让 run('echo $VAR1') 成功输出 hehe 来,可以做到吗?

    5 回复  |  直到 2016-09-18 15:47:54 +08:00
        1
    zz1956   2016-09-13 19:46:55 +08:00
    #run('VAR1=hehe && echo $VAR1')

    或者

    VAR1= 'hehe'

    @task()
    def test1():
    run('echo %s' %VAR1)
        3
    laoyur   2016-09-13 20:23:08 +08:00
    @zz1956
    @hanks315
    感谢回复

    shell_env 是可以:
    @task()
    def pi_test():
    with shell_env(VAR1='hehe'):
    run('echo $VAR1')
    但是这样很烦,本来 shell 自己的上下文逻辑,硬生生用 python 给拼接起来了,跟 zz1956 说的第二种方法类似

    我还是仿冒一下 zz1956 的第一种方案吧:

    @task()
    def pi_test():
    sh = '''
    VAR1=hehe
    echo $VAR1
    '''
    run(sh)
        4
    siteshen   2016-09-14 13:53:18 +08:00
    def hehe():
    with prefix('VAR1=hehe'):
    run('echo $VAR1')
        5
    zonghua   2016-09-18 15:47:54 +08:00
    没什么经验,结果我在 Java 的工程里也用 fabric 去部署
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4296 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 31ms · UTC 01:49 · PVG 09:49 · LAX 17:49 · JFK 20:49
    ♥ Do have faith in what you're doing.