2012-01-22 39 views
98

Làm cách nào để chuyển thông số vào tác vụ vải khi gọi "fab" từ dòng lệnh? Ví dụ:Truyền tham số cho tác vụ vải

def task(something=''): 
    print "You said %s" % something 
$ fab task "hello" 
You said hello 

Done. 

Có thể làm điều này mà không nhắc với fabric.operations.prompt?

Trả lời

174

Vải sử dụng cú pháp sau đây để thông qua đối số nhiệm vụ:

fab task:'hello world' 
fab task:something='hello' 
fab task:foo=99,bar=True 
fab task:foo,bar 

Bạn có thể đọc thêm về nó trong Fabric docs.

+7

Dấu ngoặc kép là không cần thiết; tất cả các đối số đều là chuỗi: "vì quá trình này liên quan đến phân tích cú pháp chuỗi, tất cả các giá trị sẽ kết thúc dưới dạng chuỗi Python, vì vậy hãy lên kế hoạch cho phù hợp." (Chúng tôi hy vọng sẽ cải thiện điều này trong các phiên bản tương lai của Vải, cung cấp cú pháp trực quan.) " –

+2

Các dấu ngoặc kép quanh 'hello world' có vẻ cần thiết? – PEZ

+1

@PEZ Nếu đó là sự thật, dấu ngoặc kép có thể là cần thiết trong ví dụ đó bởi vì trình phân tích cú pháp dòng lệnh hoặc đầu cuối của vải sẽ thấy không gian và nghĩ rằng đó là kết thúc của mọi thứ cho nhiệm vụ đó và 'thế giới' là một nhiệm vụ mới. –

0

Bạn cần chuyển tất cả các biến Python dưới dạng chuỗi, đặc biệt nếu bạn đang sử dụng tiến trình con để chạy tập lệnh hoặc bạn sẽ gặp lỗi. Bạn sẽ cần phải chuyển đổi các biến trở lại kiểu int/boolean một cách riêng biệt.

def print_this(var): 
    print str(var) 

fab print_this:'hello world' 
fab print_this='hello' 
fab print_this:'99' 
fab print_this='True' 
Các vấn đề liên quan