Perl 代码不在带有 crontab 调度的 bash 脚本中运行

Sah*_*her 1 bash shell perl cron

我想安排我的 Perl 代码每天在特定时间运行。所以我把下面的代码放在 bash 文件中:

Automate.sh

    #!/bin/sh
    perl /tmp/Taps/perl.pl
Run Code Online (Sandbox Code Playgroud)

时间表已在以下路径中指定:

10 17 * * * sh /tmp/Taps/Automate.sh > /tmp/Taps/result.log
Run Code Online (Sandbox Code Playgroud)

当时间到达 17:10 时,.sh 文件尚未运行。但是,当我运行 ./Automate.sh (手动)时,它正在运行并且我看到了结果。我不知道是什么问题。

Perl 代码

#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
use XML::Dumper;
use TAP3::Tap3edit;
$Data::Dumper::Indent=1;
$Data::Dumper::Useqq=1;
my $dump = new XML::Dumper;
use File::Basename;


my $perl='';
my $xml='';
my $tap3 = TAP3::Tap3edit->new();

   foreach my $file(glob '/tmp/Taps/X*')
   {
   $files= basename($file);
   $tap3->decode($files) || die $tap3->error;
    }

my $filename=$files.".xml\n";
$perl = $tap3->structure;
$dump->pl2xml($perl, $filename);
print "Done \n";
Run Code Online (Sandbox Code Playgroud)

错误:

No such file or directory for file X94 at /tmp/Taps/perl.pl line 22.
X94.xml
Run Code Online (Sandbox Code Playgroud)

gle*_*man 5

foreach my $file(glob 'Taps/X*')-- 当你从 cron 运行时,你的当前目录是/. 您需要提供该 Taps 目录的完整路径。还要指定 Out.xml 的输出目录