awk: mehrere -f in Shebang-Zeile

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

awk: mehrere -f in Shebang-Zeile

Beitrag von Meillo » 23.07.2009 15:01:18

gawk(1):
-f program-file
--file program-file
Read the AWK program source from the file program-file, instead of from the first command line argument. Multiple -f (or --file) options may be used.
ebenso mawk(1):
-f file Program text is read from file instead of from the command line. Multiple -f options are allowed.
Damit kann man Includes in awk ganz gut organisieren:

Code: Alles auswählen

$ awk -f include.awk -f program.awk <input
Das arbeitet gleich wie:

Code: Alles auswählen

cat include.awk program.awk > foo.awk
awk -f foo.awk <input

Das Problem ist aber, dass es in der Shebang-Zeile so nicht funktioniert! 8O

Wenn program.awk so aussieht:

Code: Alles auswählen

#!/usr/bin/awk -f include.awk -f

# ... code ...
Dann erhalte ich:
awk: fatal: can't open source file ` includes.awk -f' for reading (No such file or directory)
(Das war gawk, bei mawk ist das Ergebnis gleich.)


Ich versteh's einfach nicht.
Wird denn bei der Shebang-Zeile nicht einfach der eigene Dateiname (nach einem Leerzeichen) angehängt und das dann der Shell übergeben?
Wieso ist das Leerzeichen plötzlich kein Trenner mehr?

Wo denke ich falsch?
... und welchen Sinn hat vorliegendes Verhalten?
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: awk: mehrere -f in Shebang-Zeile

Beitrag von Meillo » 13.09.2009 10:15:05

Die Antwort findet sich hier: http://www.in-ulm.de/~mascheck/various/shebang/

Über die Sinnhaftigkeit alles weitere in argv[1] zu stecken lässt sich streiten.
Use ed once in a while!

Antworten