推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› 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
laoyur
V2EX  ›  Python

新手问一个关于 fabric 的问题

  •  
  •   laoyur · Sep 13, 2016 · 3287 views
    This topic created in 3663 days ago, the information mentioned may be changed or developed.
    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 replies  •  2016-09-18 15:47:54 +08:00
    zz1956
        1
    zz1956  
       Sep 13, 2016
    #run('VAR1=hehe && echo $VAR1')

    或者

    VAR1= 'hehe'

    @task()
    def test1():
    run('echo %s' %VAR1)
    laoyur
        3
    laoyur  
    OP
       Sep 13, 2016
    @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)
    siteshen
        4
    siteshen  
       Sep 14, 2016
    def hehe():
    with prefix('VAR1=hehe'):
    run('echo $VAR1')
    zonghua
        5
    zonghua  
       Sep 18, 2016
    没什么经验,结果我在 Java 的工程里也用 fabric 去部署
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   847 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:29 · PVG 04:29 · LAX 13:29 · JFK 16:29
    ♥ Do have faith in what you're doing.