Gibt es einen eleganteren Weg?

  • Hallo,


    das ist so ziemlich mein erster Versuch mit der Shell-Programmierung. Ich lade per Skript XML-Dateien von einem Webserver und muss ein paar simple Prüfungen ausführen, um zu schauen, ob sie grob in Ordnung sind:



    Nun zu den Fragen:
    [list=1]
    [*]Kann ich irgendwie rauskriegen wieviele Dateien in der Liste "/tmp/Alpen*xml" sind? (z.B. wenn ich die Liste vorher in eine Variable speichere)
    [*]Lässt sich die Prüfung auf Wohlgeformtheit der XML-Dateien vereinfachen? Kann ich die Prüfung auf Existenz von xmllint und den Check des XMLs irgendwie zusammenfassen?
    [/list=1]
    Vielleicht hat ja jemand ein paar Tipps für mich.



    MfG
    Marco

    Siemens Scenic, DVB-S Rev. 1.6, Airstar 2, 1 TB HD, Allnet ALL0281, AV-Board 1.3, Debian Squeeze

    Einmal editiert, zuletzt von killernase ()

  • Die Anzahl könntest du über ls und wc herausfinden oder in der for loop eine variable inkrementieren.


    Außerdem machts Sinn nur einmal direkt nach dem which zu prüfen, ob $XMLLINT gültig ist, nicht jedes mal im loop

  • Zitat

    Originally posted by killernase
    [list=1][*]Kann ich irgendwie rauskriegen wieviele Dateien in der Liste "/tmp/Alpen*xml" sind? (z.B. wenn ich die Liste vorher in eine Variable speichere)
    [/list=1]


    Genau so.


    Code
    xmlfiles=(/tmp/Alpen*xml)
    echo ${#xmlfiles[*]}


    Den Sonderfall, dass keine Datei vorhanden ist, musst du aber abfangen:


    Code
    if [ "${xmlfiles[0]}" = "/tmp/Alpen*xml" ] ; then echo 0 ; else echo ${#xmlfiles[*]} ; fi


    Und wenn du schon die Dateiliste als Array hast, wirst du das auch benutzen wollen:

    Code
    for xmlfile in "${xmlfiles[@]}" ; do
      ...
    done



    Gruß,


    Udo

Jetzt mitmachen!

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