Ich versuche, alle TXT mit einem Skript in ein anderes Format zu konvertieren.
Ich darf Shell-Befehle nur für die Ziele verwenden, aber ich darf keine Schleifen verwenden ...
BTW Ich muss den Dash-Interpreter verwenden.
Das Skript heißt txtConverter. Es liest txt von stdin und setzt den konvertierten Text (evtl. Markdown oder anderes Format) auf stdout. Also muss ich alle TXT-Dateien im aktuellen Verzeichnis lesen und jede davon mit dem Skript in ein explizites Format mit einem anderen Dateinamen konvertieren.
Zum Beispiel, wenn es nur 1 TXT-Datei im aktuellen Verzeichnis, sollte es zwei Dateien werden nach dem Make-Datei mit:Makefile Dateien im aktuellen Verzeichnis konvertieren
1. Directory: Hallo.txt
2. using make
3. Directory: Hallo.txt
Hallo.sh
fand ich etwas wie folgt aus:
OBJ=$(patsubst %.txt, %.sh, $(wildcard *.txt))
aussehen Dies sollte für .txt-Dateien und wandeln sie in .sh-Dateien um, oder?
convertToSh : $(OBJ)
What kind of Code?
Aber ich brauche eine Regel, um richtig zu konvertieren?
%.txt : %.sh
Das Problem ist, ich weiß nicht, wie Shell-Code verwenden, um die .sh-Datei wie zu füllen:
cat $< | ./txtConverter > [email protected]
Wenn ich $() verwenden Shell-Code auszuführen, es doens't Arbeit als auch wie:
Ich bin neu zu Makefiles und ich suchte in einer Dokumentation, aber ich verstehe nicht wirklich, wie es funktioniert. Ich bin mir nicht sicher, wie es aussieht, wenn Sie all das in einem Makefile zusammenfassen. Thx für Hilfe!
LÖSUNG GEFUNDEN:
Thx an @MadScientist und thx an 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] < $<
funktioniert gut! Gefunden .RECIPEPREFIX = ~
in der GNU-Handbuch von @MadScientist
Hinweis '.RECIPEPREFIX' wurde in GNU make 4.0 hinzugefügt, so dass einige Distributionen ältere Versionen von GNU make haben können, die dies nicht unterstützen. Wenn Sie mit der Antwort zufrieden sind, vergessen Sie nicht, sie zu akzeptieren (klicken Sie auf das Häkchen), damit die Leute sehen, dass die Frage beantwortet wurde. – MadScientist