2014-03-27 107 views
0

我寫了一個配方來檢查一個目錄是否存在。但我認爲正常的BASH語法不能應用,因爲我一直在遇到錯誤。 我寫的食譜是:Makefile配方不能正常工作

dircheck: 
    if [ ! -d "$/data/DIV5/SASC/project-064-ronald-svdz/analysis/runs/peak_calls_ctrls" ];  then 
     echo Directory does not excists peak_calls_ctrll will be created. 
     mkdir /data/DIV5/SASC/project-064-ronald-svdz/analysis/runs/peak_calls_ctrls 
    else 
     echo Directory already excists continuing the analysis! 
    fi 

我遇到的錯誤:run_MACS.mk:12: *** missing separator. Stop.

我知道它的語法,但我不知道是什麼改變。

+4

請參閱[本答案] [1]討論包含多行的編寫規則。 [1]:http://stackoverflow.com/questions/22544784/variable-assignment-issue-in-multiline-macro-in-gnu-makefile/22545855#22545855 – MadScientist

+0

MadScientist當然100%的正確[來自手冊](http://www.gnu.org/software/make/manual/make.html#Splitting-Recipe-Lines)我正在投票將其標記爲重複。 –

回答

2

您需要在行尾添加\以將它們連接成一行。 (爲配方中的每一行調用一個新的shell,所以你的if[...]被認爲是從else等單獨的shell命令。