我有这个命令,我加载(example.sh)在unix命令行中运行良好。
但是,如果我使用system
或`语法在Perl中执行它,它就不起作用。
我猜测没有加载某些设置,如环境变量和其他外部sh文件。
是否有编码示例以确保其有效?
有关编码执行失败的更多更新(我一直尝试使用不同的代码):
push (@JOBSTORUN, "cd $a/$b/$c/$d; loadproject cats; sleep 60;");
...
my $pm = new Parallel::ForkManager(3);
foreach my $job (@JOBSTORUN) {
$pm->start and next;
print(`$job`);
$pm->finish;
}
print "\n\n[DONE] FINISHED EXECUTING JOBS\n";
输出讯息:
sh: loadproject: command not found
答案 0 :(得分:5)
您能告诉我们您到目前为止所尝试的内容吗?你是如何运行这个程序的?
如果您从登录shell运行它,我的第一个怀疑将不是环境。你启动的任何Perl脚本(好吧,任何程序,真的)都继承了相同的环境。但是,如果您通过cron运行该程序,那么这是一个不同的故事。
我在这些情况下经常犯的其他错误是错误地指定相对路径。命令行中的路径很好,但我的Perl脚本还有一些其他当前工作目录。
有关一般建议,请参阅Interact with the system when Perl isn't enough。 Learning Perl 中还有一章介绍了这一点。
鉴于您与我们分享的信息非常有限,这是您可以期待的最佳建议。