[gelöst] bash-Skript unerwartetes (für mich) Verhalten

  • Hallo liebe Freunde,

    nachdem ich mir nun schon das ein oder andere Skript geschrieben habe um DVD/CD zu rippen, komme ich gerade nicht weiter.

    Was soll das Skript machen?

    Nach der Eingabe eines Suchbegriffes (in den Logs "Der_Tatortreiniger") wird nach dem info File gesucht. Da steht der Episodenname und der Serienname drin. Der Episodenname wird extrahiert.

    Das funktioniert und auch nicht.

    Die grep-Zeilen funktionieren an für sich, die lasse ich schon in anderen Skripten laufen.

    -print0 und -d$'\=' in der Zweiten find-Schleife habe ich nach einer Suche

    https://stackoverflow.com/questions/9612…by-find#9612232

    eingebaut, Stelle aber keinen Unterschied fest.

    Starte ich das Skript und lasse mir mit echo nur die Pfade ausgeben , dann sieht alles noch in Ordnung aus. Zeile für Zeile werden die Pfade angezeigt.

    Kommentiere ich nun die beiden "grep" Zeilen aus, dann werden mir nicht die erwarteten beiden Zeilen beschnitten und ausgegeben, sondern irgendetwas.

    Die Ausgabe sieht wie folgt aus:

    Bis "Fleischfresser" ist alles so wie erwartet, danach verstehe ich das Ergebnis nicht mehr. Kann mir jemand sagen wo der Fehler ist? Da die richtigen Pfade ohne grep/sed angezeigt werden erwarte ich mit grep/sed auch die richtige Verarbeitung!?

    VDR: ASUS P5DL/EPU, 1x FF TT2.1, 1x Budged Philips Semiconductors SAA7134/SAA7135HL Video Broadcast Decoder, 1x WLAN USB, NVIDIA GT610

    DEBIAN 9.latest e-Tobi amd64, VDR 2.4.0 xineliboutput-sxfe

  • Verschachtelte read-Loops sind etwas tricky... - da muss man pro read einen eigenen File-Descriptor nutzen - also z.B.:

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Edited once, last by seahawk1986 (March 18, 2018 at 9:17 PM).

  • Versuche es damit:

    - regex für grep auch mit Anker ^ für Zeilenbeginn

    - alle sed Ersetzungen mit 'g' für alle Vorkommen in der Zeile

    Code
    dat_neu_var=$(grep '^S ' "$info_var" | sed 's/^S //; s/ /_/g; s/\//#2F/g; s/"("/\(/g; s/")"/\)/g; s/\:/#3A/g')
    verz_neu_var=$(grep '^T ' "$info_var" | sed 's/^T //; s/ /_/g; s/\//#2F/g; s/"("/\(/g; s/")"/\)/g; s/\:/#3A/g')

    sieht bei mir dann so aus:

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Herzlichen Dank Euch beiden. Das finden und das füttern der Variablen funktioniert nun schon einmal.

    Bei einem ersten Versuch hatte ich anstelle des "find" einfach eine Variable mit */*/*/info übergeben und das funktionierte wie erwartet und die Versuche auf der Console, mit den Bruchstücken des Codes, funktionierten auch wie erwartet. Nun kann es weiter gehen.

    VDR: ASUS P5DL/EPU, 1x FF TT2.1, 1x Budged Philips Semiconductors SAA7134/SAA7135HL Video Broadcast Decoder, 1x WLAN USB, NVIDIA GT610

    DEBIAN 9.latest e-Tobi amd64, VDR 2.4.0 xineliboutput-sxfe

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!