Tolwin: FOP Version über Bash ermitteln

Hallo Zusammen,

nachdem ich mit google nicht erfolgreich war, stelle ich meine Frage
mal in diesem Forum. Kann mir jemand sagen, wie ich auf einem UNIX
System (SUN) per Shell die eingesetzte FOP Version abfragen kann.
Mit Perl geht sowas ja mit den Parameter --version, das klappt hier leider nicht.

Wüsste da jemand einen Weg?

Viele Grüße
Tolwin

  1. Hi,

    nachdem ich mit google nicht erfolgreich war, stelle ich meine Frage
    mal in diesem Forum. Kann mir jemand sagen, wie ich auf einem UNIX
    System (SUN) per Shell die eingesetzte FOP Version abfragen kann.
    Mit Perl geht sowas ja mit den Parameter --version, das klappt hier leider nicht.

    Wüsste da jemand einen Weg?

    Bei FOP ist das offensichtlich etwas umstädlich. Du kannst FOP zwar dazu bringen, auszugeben, welche Version läuft (-v), es versucht aber dann dennoch, etwas zu verarbeiten und spuckt dann einen Fehler aus.

    Lösung: Fehler ("keine Eingabedatei") ignorieren und nur die Version aus der Ausgabe ausschneiden.

    Um's bei Bash in eine Variable zu schreiben, kannst Du folgendes nutzen:

    FOPVERSION=fop -v 2>&1 | head -n 1 | cut -d ' ' -f 3

    (Backticks beachten!)

    Ich habe kein Solaris, aber ich verwende nichts Linux-spezifisches, d.h. solange Du eine Bourne-kompatible Shell hast (Solaris kommt glaube ich mit der Korn Shell ksh, ich bin mir aber nicht sicher), _sollte_ es klappen.

    Viele Grüße,
    Christian

    1. Hi Christian,

      vielen Dank für die Hilfe.
      Wenn ich mir  echo $FOPVERSION ausgeben lasse, dann steht nur command
      darin. Woran könnte das liegen?

      Grüße
      Tolwin

      1. Hallo Tolwin,

        vielen Dank für die Hilfe.
        Wenn ich mir  echo $FOPVERSION ausgeben lasse, dann steht nur command
        darin. Woran könnte das liegen?

        Hmm, das könnte daher kommen, dass bei Dir der Aufruf von »fop -v« nicht »FOP Version X« oder so ähnlich ausgibt, sondern eher sowas wie »bash: fop: command not found«.

        Wenn bei Dir das Script, das FOP startet, anders heißt oder nicht im PATH liegt, dann funktioniert meine Variante natürlich nicht.

        [Btw. Wir reden hier schon über Apache FOP, den XSL-FO-Prozessor, oder?]

        Viele Grüße,
        Christian

        1. Hi Christian,

          es geht um den Apache FOP generator bzw. in diesem Falle läuft noch ein Tomcat.
          Dann muß ich wohl noch etwas rum experimentieren.

          Trotzdem vielen Dank für die Unterstützung

          Grüße
          Tolwin

          1. Hallo!

            es geht um den Apache FOP generator bzw. in diesem Falle läuft noch ein Tomcat.
            Dann muß ich wohl noch etwas rum experimentieren.

            Naja, das prinzipielle Verfahren funktioniert trotzdem. Du musst halt den Befehl »fop« in meinem Code durch das ersetzen, was Du eingeben musst, um FOP zu starten.

            Es KANN natürlich sein (Du sprichst ja schließlich von Tomcat), dass das Kommandozeilen-Script, das zum Starten von FOP verwendet wird, gar nicht installiert ist und FOP immer nur aus Java heraus verwendet wird. DANN müsstest Du sowas machen wie:

            java -classpath CP org.apache.fop.cli.Main

            Wobei CP halt der Classpath ist, der nötig ist, um FOP zu starten, im Zweifel zumindest mal /pfad/zu/fop.jar (wo auch immer das bei Dir liegt), dazu aber auch noch mehr (FOP hat ja auch Abhängigkeiten zu anderen *.jars, das kann mühselig werden, die rauszusuchen).

            Viele Grüße,
            Christian