0
#!/usr/bin/perl -w

my $file = "/mypath/myenv.env";

open (FILE, ". $file ;script_init $0 $* ;set |") or

  die ("Cannot Open $file ($!)");

while (<FILE>){

  chomp;

  print "$_\n";

}

出力:

sh: script_init: command not found

問題:

この特定のエラーをシミュレートするためにスクリプトを分解しました。 $file = は、script_init およびその他の変数のパスを含む、ロードされる環境ファイルです。

script_init = 他のスクリプトが環境変数をロードするためのスクリプトの初期化に使用されるグローバル スクリプト関数。

シナリオ:

通常のシェルでscript_initを実行している場合、またはスクリプト(perlではない)で呼び出されている場合、機能しています。スクリプトの使用例はこんな感じです。

#!/bin/ksh

. /mypath/myenv.env

script_init "$0" "$*"

main script.. etc...

またはシェルで

$ script_init anotherscript parameter

しかし、perlで呼び出すと、script_initが認識されず. $file (env)、スクリプトに必要なものをロードしてもコマンドが見つかりませんでした。

4

1 に答える 1

0

!/usr/bin/perl -w

私の $file = "/mypath/myenv.env";

open FILE, qq{ksh -c ". $file ; script_init $0 $* ; set" |} または

die ("$file ($!) を開けません");

while (< ファイル >){

チョップ;

print "$_\n";

}

再びありがとう!

于 2013-11-14T06:25:55.440 に答える