V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2016-09-13 18:24:35 +08:00 · 2305 次点击
    这是一个创建于 2999 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    zz1956
        1
    zz1956  
       2016-09-13 19:46:55 +08:00
    #run('VAR1=hehe && echo $VAR1')

    或者

    VAR1= 'hehe'

    @task()
    def test1():
    run('echo %s' %VAR1)
    laoyur
        3
    laoyur  
    OP
       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)
    siteshen
        4
    siteshen  
       2016-09-14 13:53:18 +08:00
    def hehe():
    with prefix('VAR1=hehe'):
    run('echo $VAR1')
    zonghua
        5
    zonghua  
       2016-09-18 15:47:54 +08:00
    没什么经验,结果我在 Java 的工程里也用 fabric 去部署
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   532 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:59 · PVG 05:59 · LAX 13:59 · JFK 16:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.