我試圖將所有.txt與腳本轉換爲不同的格式。
我被允許使用shell命令僅僅用於目標,但我不允許使用循環...
順便說一句我必須使用破折號解釋器。
該腳本被稱爲txtConverter。它從stdin中讀取txt,並將轉換後的文本(可能是markdown或其他格式)放到stdout中。所以我必須讀取當前目錄中的所有.txt文件,並通過使用腳本將每個文件轉換爲具有不同文件名的顯式格式。
例如,如果有在當前目錄中僅有1個.txt文件,應該有2個文件使用Makefile後:Makefile將當前目錄中的文件轉換爲
1. Directory: Hallo.txt
2. using make
3. Directory: Hallo.txt
Hallo.sh
,我發現這樣的事情:
OBJ=$(patsubst %.txt, %.sh, $(wildcard *.txt))
這看起來爲.txt文件並將其轉換爲.sh文件吧?
convertToSh : $(OBJ)
What kind of Code?
但我需要一個規則來正確轉換?
%.txt : %.sh
的問題是我不知道如何使用shell代碼來填補像sh文件:
cat $< | ./txtConverter > [email protected]
如果我使用$()執行shell代碼它好好嘗試工作,以及像:
@echo $(ls -1)
我是新來的Makefiles和我在看紀錄片,但我真的不明白它是如何工作的。 我不確定它是如何將所有這些放在一個Makefile中。 Thx求助!
發現的解決方案:
THX到@MadScientist和THX到A Makefile to Convert All Markdown Files to PDFs Using Pandoc
.RECIPEPREFIX = ~
OBJS=$(patsubst %.txt, %.sh, $(wildcard *.txt))
convertToSh : $(OBJS)
%.sh : %.txt
~ ./convertTxtToSh > [email protected] < $<
工作正常!在@MadScientist的GNU手冊中發現.RECIPEPREFIX = ~
注意GNU make 4.0中增加了'.RECIPEPREFIX',所以一些發行版可能會有不支持它的舊版本的GNU make。如果您對答案滿意,不要忘記將其標記爲已接受(單擊對號),以便人們看到問題已得到解答。 – MadScientist