2012-04-10 5 views
0

Ich habe ein Korn Shell-Skript an einem Ort wie /opt/apps/abc/folder/properties.env. Ich kann es von Unix Bash mit dem Punkt Befehl ausführen:Das Ausführen von ksh-Skript in einem Perl-Code funktioniert nicht

Dies funktioniert.

Ich habe ein Perl-Skript abc.pl, von dem ich das Skript properties.env aufrufen. Ich habe versucht, die folgende anders:

  1. system('/usr/bin/ksh','-c', '. /opt/apps/abc/folder/properties.env');

  2. /usr/bin/ksh -c /opt/apps/abc/folder/properties.env;

  3. system('. /opt/apps/abc/folder/properties.env');

Keine der oben genannten Arbeit. Ich möchte nicht exec verwenden, weil ich zum Perl-Skript zurückkehren möchte. Was mache ich falsch?

+0

1) Welches Ergebnis erwarten Sie? 2) Welches Ergebnis bekommst du stattdessen? –

+1

Wie wäre es mit 'system ('/ usr/bin/ksh', '- c', '/opt/apps/abc/folder/properties.env');'? –

+0

Ich habe das auch versucht. hat nicht funktioniert. –

Antwort

3

Die Umgebungsänderungen dauern nur so lange wie die Lebensdauer der vom system-Befehl erzeugten ksh-Sitzung. Wenn Sie möchten, dass sich die Umgebungsänderungen auf das Perl-Skript auswirken, müssen Sie die Datei vor dem Starten des Perl-Programms mit der Datei eingeben.

0

Wenn Sie diese Umgebungsvariablen in Ihrem Perl-Code benötigen (nicht in der Umgebung, in der Sie perl aufgerufen haben), können Sie diese properties.env auch lesen und parsen und die Umgebung in der Variable% ENV festlegen.

z.B

$ENV{'ENV_VAR1'}=VALUE_OF_ENV_VAR1 

Verwendung system() Laichen ein anderes Verfahren als das andere Plakat gesagt. Die Änderung der Umgebung im Kind wirkt sich nicht auf das übergeordnete Element aus.