我在shell Perl脚本中有以下内容:
my @LS = `ls -1t /logs/log.csv.*`;
foreach my $line (@LS) {
如果实际存在一个或多个log.csv。*文件,则可以正常工作。
但如果没有日志文件,我会收到错误: ls:无法访问...
我可以以某种方式抑制此警告,因为shell脚本是一个cron脚本,如果没有文件就可以了吗?
答案 0 :(得分:6)
改为使用glob功能:
my @LS = glob('/logs/log.csv.*');
答案 1 :(得分:6)
您希望将错误输出重定向到/ dev / null:
my @LS = `ls -1t /logs/log.csv.* 2>/dev/null`;
答案 2 :(得分:0)
如果您不关心订单,只需使用[glob
] [glob]。
my @LS = glob('/logs/log.csv.*');
如果您需要按照问题中的命令修改时间对其进行排序,则可以使用Schwartzian transform。
my @LS = map{
$_->[0]
} sort{
$a->[1] <=> $b->[1]
} map{
[$_, (stat)[9] ] # mtime
} glob('/logs/log.csv.*');
for my $line ( @LS ) {
...
}