如何从cron运行的Perl脚本中运行shell脚本?

Cez*_*Cez 2 shell scripting perl cron

是否有可能在cron中使用shell sript(date.sh和backlog.sh)运行Perl脚本(vas.pl),反之亦然?谢谢.

 0 19 * * * /opt/perl/bin/perl /reports/daily/scripts/vas_rpt/vasCIO.pl 2> /reports/daily/scripts/vas_rpt/vasCIO.err
Run Code Online (Sandbox Code Playgroud)

遇到错误:

 date.sh: not found
 backlog.sh: not found
Run Code Online (Sandbox Code Playgroud)

Perl脚本:

#!/opt/perl/bin/perl

system("sh date.sh");
open(FH,"/reports/daily/scripts/vas_rpt/date.txt");
@date = <FH>;

close FH;

open(FH,"/reports/daily/scripts/vas_rpt/$cat1.txt");
@array = <FH>;

system("sh backlog.sh $date[0] $array[0]");

close FH;
Run Code Online (Sandbox Code Playgroud)

sle*_*man 8

cron在与当前工作目录不同的工作目录中运行perl脚本.使用脚本文件的完整路径:

# I'm assuming your shell script reside in the same
# dir as your perl script:

system("sh /reports/daily/scripts/date.sh");
Run Code Online (Sandbox Code Playgroud)

或者如果你对我这样的硬编码路径过敏,你可以使用FindBinCPAN 的软件包:

use FindBin qw($Bin);
system("sh $Bin/date.sh");
Run Code Online (Sandbox Code Playgroud)

如果您的shell脚本还需要以正确的路径启动,那么首先更改您的工作目录可能更好:

use FindBin qw($Bin);
chdir $Bin;
system("sh date.sh");
Run Code Online (Sandbox Code Playgroud)