2013-07-11 108 views
0

我發現我可以在Makefile中使用ifneq,我試圖比較0和命令統計的輸出:如果語句生成文件

@for f in `find $(PATH_PAGES) -name *.hbs`; do \ 
    ifneq "`stat -c '%Y' $$f`" "0"; 
     //some code here 
    endif 
done 

但在終端,我得到了一個錯誤:ifneq:命令不發現

有沒有不同的方式來比較這或者我做錯了什麼?

+3

'-c'不是便攜式選項來統計,所以我猜你是用它來確定是否該文件已被修改。 'make'在比較時間戳方面非常好,以確定依賴關係是否過時,並且讓'make'評估時間戳可能會更好。此外,你將需要線延續(可能更多分號),因爲make會將多行視爲多個命令。 –

+0

那麼,我該如何讓'make'確定時間戳呢?在該循環中有一個命令,並且'make'總是在每個文件上調用這個命令,即使這個文件沒有被修改。因此,在那個循環中,我使用'touch'來更改時間戳,現在我想比較時間戳之後的時間,我使用'touch --date =「1970-01-01 03:00」$$ f;'和 知道這是可怕的解決方案,但我需要編輯該生成文件,這是我的第一天,所有這使得和makefiles) –

回答

4

在這種情況下,你想用化妝的ifneq,因爲它的文本替換移交命令前殼,但你有一個殼循環,需要根據每個迭代做不同的事一個shell命令的輸出。

使用shell if相反:如果你想,因爲如果你指定[TAB]那麼它是作爲外殼處理,用生成文件的,如果條件,那麼不應該有[TAB] if語句之前

if [ "`stat -c '%Y' $$f`" != "0" ]; then 
    //some code here 
fi 
+0

謝謝!順便說一句,我添加了「然後」後,如果條件,它現在的作品。 –

+0

@IvanShcherbakov,對,我忘記了。我編輯了答案:) – legoscia