2012-09-21 47 views
5

如果我有ñ命令的列表,Ç = C1 ... CN,我怎麼可以爲了執行它們對於給定的目標是什麼?我試過的foreach構建如何在列表中執行每個命令?

$(foreach x,$(c),./$(x)) 

但這使在一行中的所有命令。任何線索?

+1

聽起來就像你想讓bash超過Make。 – Flexo

回答

8

您發現的問題(「但這使在一行」所有命令)。只需在循環中展開$x就可以追加換行符。

define \n 


endef 

現在只需在您的食譜中使用$(foreach x,$c,./$(x)${\n})

+0

好的,謝謝bobbogo! –

5

如果沒有需要檢查的成功,再加入分號應該工作:

$(foreach x,$c,./$(x);) 

如果你需要的,如果在列表中的命令之一返回失敗失敗,你需要打破它的步驟。而不是直接執行的命令,我們總結執行中進行函數:

define execute-command 
$(1) 

endef 

execute-list: 
     $(foreach x,$(c),$(call execute-command,./$(x))) 
+1

您不需要在每個行的擴展名前添加一個製表符。 _Make_實現了每一行代表由於該選項卡已經在配方中的新命令。 – bobbogo

+0

@bobbogo - 很好,謝謝。根據您的建議簡化答案。 – FooF