axeljaeger
14-09-2003, 19:06
Ich möchte ein selbsextrahierendes Setupprogramm schreiben. Dazu hab ich mir gedacht, hänge ich vorne mit cat an ein tar.bz2-Archiv einen kleinen Shellskriptvorspann an, der sich selbst entfernen soll, das was übrig bleibt in /tmp/irgendwas.tar.bz2 kopiert, das Archiv entpackt und eine Datei im Archiv ausführt. Das Ende meines Shellskriptes wollte ich mit drei Rauten markieren. Das Skript müsste also nur die gesammte Datei öffnen und alles, was hinter den drei Rauten steht in eine Datei kopieren. Mein Problem ist, ich weis nicht, wo ich ansetzen soll. Ich hab hier in einem Buch etwas gefunden, das nennt sich "Parametersubstitution". Damit sollte ich es doch eigetnlich schaffen können, alles vor "###" zu eliminieren. Das klappt aber bei nicht. Hier ist der Quelltext, den ich bisher habe:
#!/bin/bash
cat ${cat installer.sh#*'###'} > installer.exe
exit
###
Da bekomme ich immer eine
installer.sh: line 2: ${installer.sh#*'###'}: bad substitution
Ich weis jetzt nicht, ob das mit der Parametersubstitution der richtige Ansatz ist, bessere Lösungen sind willkommen. Ich hab mir auch schon überlegt, vielleicht noch Perl mit einzuspannen, dabei ergibt sich allerdings das Problem, das ich das Perl-Skript in mein Shellskript einbinden müsste, weil ich an ein Perlskript nicht ohne weiteres eine Binärdatei anhängen kann, ohne das der Interpreter meckert.
Beim Denken, wie das denn gehen könnte, ist mir noch ein Problem eingefallen: Wenn das Skript nicht mit dem Verzeichnis, in dem Skript liegt, als Workingdir aufgerufen wird, wird die Datei wahrscheinlich gar nicht gefunden. Gibt es da noch eine Idee, wie man den absoluten Pfad vom aktuellen Skript herausbekommen kann?
Vielen Dank im Vorraus.
#!/bin/bash
cat ${cat installer.sh#*'###'} > installer.exe
exit
###
Da bekomme ich immer eine
installer.sh: line 2: ${installer.sh#*'###'}: bad substitution
Ich weis jetzt nicht, ob das mit der Parametersubstitution der richtige Ansatz ist, bessere Lösungen sind willkommen. Ich hab mir auch schon überlegt, vielleicht noch Perl mit einzuspannen, dabei ergibt sich allerdings das Problem, das ich das Perl-Skript in mein Shellskript einbinden müsste, weil ich an ein Perlskript nicht ohne weiteres eine Binärdatei anhängen kann, ohne das der Interpreter meckert.
Beim Denken, wie das denn gehen könnte, ist mir noch ein Problem eingefallen: Wenn das Skript nicht mit dem Verzeichnis, in dem Skript liegt, als Workingdir aufgerufen wird, wird die Datei wahrscheinlich gar nicht gefunden. Gibt es da noch eine Idee, wie man den absoluten Pfad vom aktuellen Skript herausbekommen kann?
Vielen Dank im Vorraus.