ksh-Skript aus Perl in lokalem Kontext ausführen
|
Seitenanfang |
| Hallo, wie kann ich aus perl ein Shellskript in lokalem Kontext aufrufen. Es geht mir hauptsächlich um die Variablenübernahme. Mit ksh geht dies ja so: #!/bin/ksh cmd1 cmd2 . [skript] # wird in lolkalem Kontext ausgeführt mit perl: #!/usr/bin/perl ... system ("[skript]"); # läuft leider in einer Subshell und ich komme an die Umgebungsvariablen aus perl nicht ran
Datum: 24.11.2005-00:41

|
re: ksh-Skript aus Perl in lokalem Kontext ausführen
|
Seitenanfang |
Hi, was genau willst Du machen? Greifst Du in dem Skript auf Variablen zu, die vorher gesetzt worden sein sollten? Wie ist es, wenn Du stattdessen mit Parameterübergabe arbeitest? Bei mir (mit Bash allerdings) geht Folgendes problemlos: # geht system('echo $USER');# geht auch $ENV{'BLA'} = 'blablabla'; #(Variable BLA setzen) system('echo $BLA'); # geht auch (envi.sh enthlt nur ein "echo $BLA") system('envi.sh'); # geht auch (envi.sh enthlt nur ein "echo $BLA") system('. ./envi.sh');
Gruss, svenXY
Datum: 24.11.2005-09:21

|
re: ksh-Skript aus Perl in lokalem Kontext ausführen
|
Seitenanfang |
Aus einem Perl-Skript soll ein ksh-Skript ausgeführt werden, welches nochmal diverse ksh-Skripte aufruft. Die ksh-Skripte setzen u.a. diverse Umgebungsvariablen, die ich im weiteren Verlauf des Perl-Skriptes brauche. Man könnte natürlich die ksh-Skripte nachprogrammieren in Perl, aber aufgrund von Änderungen und der Komplexität derselben ist dies uneffektiv.
Datum: 24.11.2005-10:19

|
re: ksh-Skript aus Perl in lokalem Kontext ausführen
|
Seitenanfang |
OK, ich verstehe. Das geht AFAIK nicht. Selbst wenn Du die Variablen exportierst, werden diese nur in neu gestarteten Prozessen verfügbar sein und das Perlskript läuft ja dann schon.Du könntest höchstens die Variablen in eine Datei echoen und diese dann in Perl einlesen - so als (schlechten) Workaround. Gruss, svenXY
Datum: 24.11.2005-10:28

|