当我从Perl运行它时,为什么我的shell脚本不起作用?

Gor*_*don -2 unix perl

我有这个命令,我加载(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";
Run Code Online (Sandbox Code Playgroud)

输出消息:

sh: loadproject: command not found
Run Code Online (Sandbox Code Playgroud)

bri*_*foy 5

你能告诉我们你到目前为止所尝试的内容吗?你是如何运行这个程序的?

如果您从登录shell运行它,我的第一个怀疑将不是环境.你启动的任何Perl脚本(好吧,任何程序,真的)都继承了相同的环境.但是,如果您通过cron运行该程序,那么这是一个不同的故事.

我通常在这些情况下犯的其他错误是错误地指定相对路径.命令行中的路径很好,但我的Perl脚本有一些其他当前工作目录.

有关一般建议,请参阅Perl不够时与系统交互.学习Perl还有一章关于此.

鉴于您与我们分享的信息非常有限,这是您可以期待的最佳建议.