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)
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)