Perl Script in bash script ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
trickykid
Beiträge: 275
Registriert: 15.05.2003 12:37:06

Perl Script in bash script ausführen

Beitrag von trickykid » 27.12.2013 13:45:30

Wie kann ich ein Perl Programm in einem bash script ausführen, also ungefähr so

Code: Alles auswählen

#!/bin/sh
#
## perl.pl ausführen
??????

## refresh 
/etc/init.d/blabla -k reconfigure

Benutzeravatar
4A4B
Beiträge: 926
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Perl Script in bash script ausführen

Beitrag von 4A4B » 27.12.2013 14:02:05

So, wie du das Perl-Script in einem Terminal ausführst, wobei ich den vollen Pfad angeben würde:

Code: Alles auswählen

/pfad/zum/perl-script/perl.pl
Edit:

falls das Perl-Script nicht mit einer Shebang-Zeile beginnt ...:

Code: Alles auswählen

#!/usr/bin/perl
... muss es folgendermaßen ausgeführt werden:

Code: Alles auswählen

/usr/bin/perl /pfad/zum/perl-script/perl.pl
Zuletzt geändert von 4A4B am 27.12.2013 17:59:09, insgesamt 1-mal geändert.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Perl Script in bash script ausführen

Beitrag von Cae » 27.12.2013 14:16:50

Falls es darum geht, das Skript "im Text" zu haben, geht das ueber eines der folgenden Konstrukte:

Code: Alles auswählen

#!/bin/sh

echo 'print("Beispiel\n")' | perl
# oder
echo '
print("Beispiel\n");
print("noch ein Beispiel\n");
' | perl
# oder
cat <<EOF | perl
print("Beispiel\n");
print("noch ein Beispiel\n");
EOF
Du musst allerdings beachten, dass bei der echo 'foo' | perl-Variante eventuelle Ticks ' zu '\'' escapt werden muessen. Das Problem hat man bei der cat <<EOF-Variante (das Verfahren heisst 'here-doc') nicht, allerdings werden dort Variablen wie $foo von der Shell interpretiert. Falls sie fuer den Perl-Interpreter gedacht sind, muss das Dollar-Zeichen $ zu \$ escapt werden.

Falls das Skript extern sein kann, steht oben schon alles relevante.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

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

Re: Perl Script in bash script ausführen

Beitrag von Meillo » 27.12.2013 17:43:30

4A4B hat geschrieben: Edit:

falls das Perl-Script nicht mit einer Shebang-Zeile beginnt ...:

Code: Alles auswählen

#!/usr/bin/perl
... kann es folgendermaßen ausgeführt werden:

Code: Alles auswählen

/usr/bin/perl /pfad/zum/perl-script/perl.pl
Das kann man falsch verstehen. Du hast zwar Recht, aber man kann Perl-Script immer so ausfuehren, egal ob mit Shebang, oder ohne.

Wenn du eine Shebang-Zeile hast, dann kannst du das Script *auch* direkt ausfuehren, du brauchst es nicht als Argument dem Perl-Interpreter uebergeben. Fehlt die Shebangzeile, dann *musst* du es selbst mittels des Perl-Interpreters aufrufen. (Auch ein Script mit Shebang kann man mittels des Interpreters ausfuehren, nicht aber umgekehrt.)
Use ed once in a while!

Benutzeravatar
4A4B
Beiträge: 926
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Perl Script in bash script ausführen

Beitrag von 4A4B » 27.12.2013 18:00:21

Meillo hat geschrieben:Das kann man falsch verstehen.
Ja, hast recht, da hatte ich wohl einen Gedanken übersprungen :)
("dann funktioniert das so nicht, kann aber folgendermaßen ausgeführt werden:")

Ich habe das "kann" oben durch ein "muss" ersetzt

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

Re: Perl Script in bash script ausführen

Beitrag von Meillo » 27.12.2013 19:00:48

4A4B hat geschrieben: Ich habe das "kann" oben durch ein "muss" ersetzt
Und ich habe mir erlaubt, in deinem Post, das ``nicht'' fett hervorzuheben. Das habe ich naemlich ueberlesen und war nur deshalb verwirrt.

Man kann jetzt sagen, dass nur mein Verlesen das Problem war, aber wenn ich mich verlese, dann wird das Anderen wohl auch passieren. Und das wiederum ist ein Argument gegen Verneinungen mit ``nicht''. Deshalb statt ``nicht vorhanden'' lieber ``fehlt'' verwenden!


Aber hier ist nun ja alles geklaert, hoffe ich. :-)
Use ed once in a while!

Benutzeravatar
4A4B
Beiträge: 926
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Perl Script in bash script ausführen

Beitrag von 4A4B » 27.12.2013 19:15:25

Ja, so ist es klarer :)

Antworten