2012-03-16 23 views
2

我是一名統計人員,我最近爲一個研究項目編寫了一個bash管道,它基本上是一個主要的bash腳本,在每一步調用bash,python和R腳本分析,當然還有很多步驟和很多腳本。我的朋友告訴我,我可以爲他們創建一個makefile,但除了編寫腳本之外,我幾乎沒有計算機上的經驗。我找到了一些例子,但他們是爲VC。我的病例是否也需要像VC程序一樣編譯?任何人都可以與我分享他的一些經驗嗎? 例如,我有main.sh,它調用step1.py,step2.sh,step3.r和step2.sh調用step2.1.py,step2.2.r如何通過makefile鏈接它們?如何爲python,R和bash腳本編寫makefile

+0

不,你不需要編譯Python,R或Bash腳本。你認爲你需要一個Makefile嗎? – 2012-03-16 18:14:26

+0

Make非常適合製作文件(儘管它可以做其他事情)。當一個進程的輸出文件是另一個進程的輸入文件時,它尤其擅長在DAG中創建文件;如果有人修改了一些輸入文件,Make會確定哪些步驟需要將所有內容更新*,然後執行。如果這聽起來像你的情況,我們很樂意幫助你;否則,Make不適合你的工作,並且沒有理由採用它。 – Beta 2012-03-16 18:24:37

+0

作爲一種語言提供一些非常強大的宏/文本替換機制。即使你的代碼沒有處理文件上的任何數據,我也發現在Bash之上使用Make作爲圖層/協調器非常強大。如果看起來每個腳本之間都存在一個複雜的依賴關係網絡,並且您希望將這些依賴關係表示爲位於所有這些腳本之上的文件,那麼IMO Make實際上可能對您很有幫助。 – 2012-03-17 03:38:22

回答

1
step1: 
    step1.py;\ 
    $(MAKE) step2;\ 
    step3.r 

step2: 
    step2.1.py;\ 
    step2.2.r 

all: step1 
    echo "Done" 

從您的描述中,它聽起來像main.sh和step2.sh,只是調用python和R腳本。如果是這樣的話,那麼上面的Makefile就會替換它們。如果他們有其他步驟,那麼您可以在step1或step2目標中添加這些bash命令。

像這樣使用Makefile將允許您僅執行部分執行序列以進行調試。

+0

很好,謝謝Brant – user1269298 2012-04-09 22:19:45

+0

@ user1269298如果這對你有用,請接受答案。 – 2012-04-10 00:15:50