VDR-Version ermitteln

  • Hallo zusammen,


    ich möchte in einem Bash-Skript die aktuell verwendete VDR-Version im Format ##.##.## ermitteln (#- steht für eine Zahl) Ich mache dies mit folgender Zeile:

    Code
    vdr -V | awk '"[0-9].*.[0-9][0-9]" {print $2}' | sed -e 's/(//' | sed -e 's/)//'


    Ich habe allerdings das Gefühl, das dies ein wenig von Hinten durch die Brust läuft.
    Hat jemand Ideen für mich, damit ich nicht dumm/doof bleibe.


    Gruß
    Wicky

  • Danke TomG,


    an soetwas hatte ich gedacht. Denn zweimal sed und dann noch einmal awk aufzurufen, scheint mir ein wenig viel zu sein. (Auch wenn es sicherlich nicht schmerzhaft ist, aber es geht mir auch darum etwas zu lernen)


    Gruß
    Wicky

  • ... und auf einen neues.


    Leider gibt der VDR ab der Version 1.3.48 auch die API-Version aus.


    vdr -V liefert:
    vdr (1.4.0/1.4.0) - The Video Disk Recorder


    Meine neue Zeile lautet daher:
    vdr -V | awk '"[0-9].*.[0-9][0-9]" {print $2}' | sed -e 's/(//' | sed -e 's/\/1.*//' | sed -e 's/)//'


    Die Zeile funktioniert sowohl bei der alten als auch bei der neuen Ausgabe. Aber sie ist wiedereinmal unnötig lang und meine sed Fähigkeiten sind auch nicht wirklich besser geworden.


    Könnte mir jemand die Zeile kürzen. Ich würde mich riesig freuen und ich denke andere würde es auch freuen.


    Besten Dank,
    Wicky


    [Nachtrag] Ich werde die obige Zeile vorerst benutzen und mich dann selber an die Vereinfachung machen. Trozdem würde ich mich über Tipps oder gar eine neue Zeile freuen.[/Nachtrag]

  • Code
    VDRVERS=$(vdr -V); VDRVERS=${VDRVERS/*(}; VDRVERS=${VDRVERS/\-*}; VDRVERS=${VDRVERS/\/*}; echo $VDRVERS


    Ich weiss aber nicht ob alle shells das können...


    EDIT: Erkennt nur das neue Format, ist wohl auch nicht das wahre... :(

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

    2 Mal editiert, zuletzt von vejoun ()

  • Zitat

    Original von vejoun

    Code
    VDRVERS=$(vdr -V); VDRVERS=${VDRVERS/*(}; VDRVERS=${VDRVERS/\-*}; echo $VDRVERS


    Ich weiss aber nicht ob alle shells das können...


    EDIT: Erkennt nur das neue Format, ist wohl auch nicht das wahre... :(

    Danke für die etwas andere Vorgehensweise, aber das funktioniert bei mir so nicht:


    vdr 1.3.37 Ausgabe:
    1.3.37)


    vdr 1.4.0 Ausgabe:
    1.4.0/1.4.0)


    So muss es aussehen:
    1.3.37 bzw. 1.4.0 oder auch 1.4.0-2


    Meine Zeile schafft das bei beiden vdr-Versionen schon, sie ist aber ein wenig aufwändig. Aber ich denke das ganze ist kein Drama.


    Allerdings kann man deine Vorgehensweise natürlich so anpassen, dass die Ausgabe so aussieht wie sie soll. Aber mehrfach eine Variable umschreiben ist auch nicht gerade elegant. Allerdings kommt man ohne sed und awk aus.


    Gruß und Dank,
    Wicky


  • Die VDR-Version (also die erste Versionsnummer) kannst du so ermitteln:

    Code
    vdr -V | sed 's/.*(\([^/]*\)[)/].*/\1/'


    Und die API-Version geht so:

    Code
    vdr -V | sed 's/.*[(/]\(.*\)).*/\1/'


    Beim alten Format mit nur einer Versionsnummern liefern beide Befehle die selbe Nummer.


    Tom

Jetzt mitmachen!

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