我试图将所有.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