Bash duht ned, was ich will :(

  • Hallo,


    schraube gerade noch an den letzten Feinheiten meines Backup-Scripts und da fehlte mir noch der Generationen-Vertrag zu meinem Glück.
    Dachte - so schwer kann das doch nicht sein ... :O


    isses vielleicht aba doch.


    Hier erstmal das Testscript:


    Vor dem ersten Aufruf "createDirs" auskommentieren, dann wird ne Testumgebung erstellt.
    Danach wieder deaktivieren.


    Jetzt soft aufrufen, bis die Testdateien in Verzeichnis 0 angekommen sind und es so aussieht:


    Mit dem näxten Aufruf sollte das Script eigentlich(tm) aktiv werden.
    Verzeichnis 0 wird zu Verzeichnis 1 und danach sollten die Dateien ins neue (leere) Verzeichnis 0 kopiert (bzw. gelinkt) werden.


    Statt dessen kommt die folgende Ausgabe:


    Zeile 41 und 42 vom Script produzieren den Fehler.


    Jetzt meine Frage:
    Habe ich im Script einen Denkfehler, oder kommt das Problem, weil der Verzeichniscache den letzten move-Befehl nicht mitbekommen hat?
    Wenn ich in Zeile 41 und 42 jeweils das "/*" wech lasse, kopiert er zwar, aber dann kopiert er den obersten Verzeichnisnamen ja auch mit rein - und das willich ja vermeiden tun ...


    Gruß Gero

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

  • Hi,


    nur ein Schnellschuss:


    Der Stern darf nicht gequoted werden.


    Ciao.
    Michael.


  • Meinste das?


    "${prefLevel}1/*"


    Gut möglich, denn ls -l "*" geht nicht.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Gut möglich, denn ls -l "*" geht nicht.

    Der Vollständigkeit halber: Das liegt daran, dass die Shell selbst Patterns wie * expandiert. Wäre auch idiotisch, diese Funktionalität in jedes einzelne Kommando einzubauen. Wenn du also "ls -l *" tippst bekommt ls beim Aufruf tatsächlich ein argv[] = {"/bin/ls", "-l", "foo", "bar", "baz", ...} mit. (Falls es die Files foo, bar, und baz gibt, natürlich)


    Wenn man sich das mal klar macht, können solche Fehler auch nicht mehr passieren :)

    Asrock A75 Pro4-M
    Debian wheezy (testing, stock) (aktuell 2012-08-24: Linux 3.2, VDR 1.7.28)
    vdr-sxfe (xineliboutput)
    Pioneer VSX-520-K

  • Bin auch schon drüber gestolpert. Bei mir ging es aber um ~.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!