tar-befehl output in Variable und perlscript übergeben!

L

legeti

Jungspund
Hallo zusammen,

ich habe ein Problem::hilfe2:

Ich habe ein shellscript, indem ich alle dateien, in einem Verzeichnis, eines bestimmten Typs, in ein tar archiv packe. Dieses tar archiv wird einem Perlskript übergeben das dies per Mail verschickt.
Code:
tar -cvf archiv.tar *.tmp
Code:
gzip -c archiv.tar > archiv.tar.gz
....
Code:
perl '/home/user1/mail.pl' archiv.tar.gz

soweit so gut. Nun möchte ich das dem Perlscript noch die Dateinamen der Dateien die gepackt wurden übergeben wird. Meine Idee das ich den output vom tar-Befehl in eine Variable speicher, dann die 2. Spalte mit den Dateinamen ausschneide und dann als Parameter dem Perlscript übergebe.

Ich bekomme das aber mit der Variable nicht hin!
so zum Test dachte ich so:
Code:
tar -cvf archiv.tar *.tmp >$var_test
Code:
echo ${var_test}

geht aber nicht. ohne $ legt er eine Datei an!

Bitte um eure Hilfe!

thanks
 
Hallo
Warum machst du nicht einfach vor dem 'tar'
Code:
files=$(ls *.tmp)
echo "$files"

Gruss
d22
 
oder einfach

Code:
var=$(tar -cvzf archiv.tar *.tmp)

Eventuell ist es ratsam, die Ausgabe in einem Array zu speichern:

Code:
var=($(tar -cvzf archiv.tar *.tmp))
 
Hallo
Du solltest eventuell die Fehlerausgabe von tar nach /dev/null schieben,
sonst bekommst du unter Umständen unerwartete Ergebnisse.
2>/dev/null

Nur so als Hinweis.
Gruß Wolfgang
 
Hallo,
Vielen Dank schonmal. Habe aber noch Fragen.

wegen der Umleitung in 2>/dev/null

Code:
tar -cvf archiv.tar *.csv >output
das funktioniert nicht, ich bekomme nur den output wenn ich das so machen:
Code:
tar -cvf archiv.tar *.csv 2>output

woran liegt das? 2> ist doch die Fehlerausgabe oder??

der output sieht so etwas aus:
Code:
a blabla.csv 1 blocks

was bedeutet a?

Ich kann tar -cvzf nicht benutzen weil es auf HPUX läuft!

Vielen Dank
 
Hallo
Sorry, Denkfehler von mir.
Natürlich, tar verwendet ja die Fehlerausgabe für die Protokollierung.
Du könntest aber alternativ die List-Funktion von tar benutzen, dann gehst du sicher nur den Inhalt zu bekommen. Bei GNU-tar ist das die Funktion -t.

also
Code:
 var=$(tar -tf archiv.tar)

Gruß Wolfgang
 
Hi!

Das a bei der Ausgabe bedeuted "added to archive", zum Auflisten eines TAR-Archivs benötigst du den Parameter t: tar -tf TARFILE.tar (HP-UX 11i Version 1).

Code:
> LIST=$(tar -cvf TARFILE.tar *tmp 2>&1|cut -d" " -f2)
Code:
> echo $LIST
file1.tmp file2.tmp file3.tmp
 
Vielen DANK!!!

HI,

Vielen Dank für eure SUPER Hilfe!!!

Habe es jetzt hinbekommen!

DANKE nochmals!:respekt:
 
Zurück
Oben