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 = 全局脚本函数,用于其他脚本加载环境变量的脚本初始化。

设想:

如果我在常规 shell 中运行 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";

打开文件,qq{ksh -c ".$file ; script_init $0 $* ; set" |} 或

die ("无法打开 $file ($!)");

而(<文件>){

咀嚼;

打印“$_\n”;

}

再次非常感谢!

于 2013-11-14T06:25:55.440 回答