Thread Shell-Error durchs benutzen von `` (36 answers)
Opened by FlorianL at 2008-01-21 15:12

FlorianL
 2008-01-21 15:12
#104982 #104982
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

Ich habe ein ksh script gebastelt das den ls-output in eine Datei schreibt und per perl regex den output so abändert wie ich ihn brauche.

Das Script funktioniert zwar, aber ich bin damit nicht zufrieden und wollte es nun mal eben in perl umschreiben:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/perl
use strict;

my $filespath = "/home/re17830/chksize/checksize_db";

my $date = `date +%y-%m-%d`;
my $day = `date +%d`;
my $predaycheck = $date--;
my $preday = $day--;
my $month = `date +%m`;
my $premonth = $month--;

if ($month == 01) {
        $premonth = "12";
}

chomp(my $prechk = `echo $preday |wc -ck`);

if ($prechk == 2) {
        $preday = "0$predaycheck";
}

my $pre_date = "`date +%y-%m`-$preday";

my $newfile = "$filespath/SizeCheck-$date\.dat";
my $oldfile = "$filespath/SizeCheck-$pre_date\.dat";

my @filesystem = `ls -Rlgo /`;

open(REWRITE, ">$newfile");

foreach(@filesystem) {
        chomp();
        my @line = split(/ +/);
        if ($line[0] =~ m/^\//g) {
                print REWRITE "\n$line[0]\n";
        } elsif (($line[0] =~ m/^dr/g) || ($line[0] =~ m/^-r/g)) {
                print REWRITE "$line[2]\t\t$line[6]\n";
        } else { next; }
}

if ($day == 28) {
        `rm $filespath/SizeCheck-*-\$premonth\-*`;
}


Problem 1:

Die Datei wird nicht richtig benannt, Output file (REWRITE) hat den namen "SizeCheck-7.dat" statt "SizeCheck-08-01-21.dat"

Ich schätze das bekomm ich noch hin, aber das andere Problem ist seltsam...

Problem 2:

Beim ausführen bekomme ich folgende Fehlermeldung:
Quote
xtest11 # perl build_checksize_db.pl
sh[2]: 0403-057 Syntax error at line 2 : `|' is not expected.
xtest11 #


Dabei kann es sich ja nur um diese Zeile handeln:
Code (perl): (dl )
chomp(my $prechk = `echo $preday |wc -ck`);


Jemand dazu ne idee? Vor allem bei Punkt 2 hab ich kein plan?!

Danke & Schönen Tag noch :)

View full thread Shell-Error durchs benutzen von ``