Hallo Shellscript Profis!
Ich bin leider keiner!!! Deshalb bitte ich euch um Hilfe!
Ich habe ein Script mit viel Mühe und ständigem Googeln zusammengestrickt, das weitgehend tut was es soll.
Ich schildere kurz was gemacht werden soll.
Auf einem Ubuntu-Xenial läuft ein Postfix/Dovecot zur Zufriedenheit. Einige Mailuser schicken PDF-Dateien als Anhang. Diese Dateien sollen extrahiert werden und mit Kundennummer versehen in einem Processing-Ordner in einem Unterverzeichnis das so heisst wie die Kundennummer abgelegt werden. Am Schluß sollen die Mails aus dem Postfach gelöscht werden.
Ich verwende um die Mailanhänge zu extrahieren RIPMIME, damit bin ich leidlich zufrieden. Um die Dateien mit der Kundennummer zu versehen verwende ich MMV.
Manuell durchgeführt ist alles ok.
Ich habe allerdings und das ist eine meiner Fragen: Schwierigkeiten das Suchkriterium im Findbefehl als Variable anzugeben (ich weiß nicht welche Syntax ich benutzen muss).
Die zweite Frage betrifft MMV auch hier muß ich eine Pfadangabe und das Kriterium zum umbenennen der PDF-Dateien als Variable angeben und ich scheitere ebenso.
Außerdem habe ich das Variablenhandling in For-Schleifen anscheinend noch nicht richtig verstanden. Das Zuweisen von Werten hat nicht funktioniert wie ich es erwartet habe.
Nachfolgend das kleine Möchtegern Script:
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 | #!/bin/bash pfad=/var/vmail/mailboxes/global-vat-refund.com/ folder=() kunde=ds_ pfad_zum_processing_folder=/var/opt/processing/ kundenverzeichnis_im_processing_folder=$pfad_zum_processing_folder$kunde #Kundenverzeichnis im Processing-Folder erstellen (falls noch nicht vorhanden) #mkdir -p $kundenverzeichnis_im_processing_folder # In Mailboxverzeichnis wechseln cd $pfad # Verzeichnisnamen einlesen while IFS= read -r -d $'\0'; do folder+=("$REPLY") done < <(find . -name "ds_*" -type d -printf '%f\n' -print0) ----- Frage wie definiere ich den Suchbegriff im Beispiel "ds_*" als Variable $kunde ??? # Eingelesene Verzeichnisse mit Ripmime bearbeiten for i in ${folder[@]}; do echo $i kundenverzeichnis_im_processing_folder=/var/opt/processing/$i mkdir -p $kundenverzeichnis_im_processing_folder echo $kundenverzeichnis_im_processing_folder ripmime -i $i/mail/cur -d $kundenverzeichnis_im_processing_folder --syslog | mmv $kundenverzeichnis_im_processing_folder "*.pdf" "$i_#1.pdf" ---- Frage: wie übergebe ich mmv die Ersetzungsparameter als Variable oder sollte ich etwas anderes als MMV verwenden done Code |
Vielen Dank für eure Hilfe! Für Verbesserungsvorschläge bin dankbar!!!
MfG RO