Successfully reported this slideshow.
Your SlideShare is downloading. ×

FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 21 Ad

FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt

Download to read offline

Das OS X des Mac basiert auf UNIX. Der Anwender hat über das Dienstprogramm Terminal vollen Zugriff auf sämtliche Tools wie awk, sed, grep, test, sort u.s.w.

Über ein geeignetes Plugin lässt sich diese Möglichkeit auch innerhalb von FileMaker nutzbar machen. Eine Eigene Funktion stellt ein User-Interface für mehrere Plugins bereit.
Die Schnittstelle wird im Vortrag vorgestellt und erläutert. Sie bietet die Möglichkeit, Shell-Skripts mit mehreren Parametern und Eingabedaten zu versorgen. Es wird gezeigt, wie man eine Bibliothek von Shell-Skripts in ein FileMaker-Projekt integrieren, die Skripts mit verschiedenen Testdaten testen und später für den produktiven Betrieb nutzen kann.
Viele Probleme lassen sich auf diese Weise einfacher lösen als mit den von FileMaker bereitgestellten Funktionen. Das liegt daran, dass es viele UNIX-Tools gibt, die auf das Scannen von Eingabedaten mit Hilfe regulärer Ausdrücke spezialisiert sind.

Im produktiven Betrieb kann das getestete Skript mit SQL aus der Skriptbibliothek gelesen und mit der Funktion SHEXEC ausgeführt werden.

Erich Schmidt hat über 30 Jahre Erfahrung im Umgang mit UNIX-Shells. Er wird Anwendungsbeispiele für awk, sed, sort und evtl. weitere Tools geben. Der Schwerpunkt liegt dabei auf der Anwendung von awk mit seinen Builtin-Funktionen (match, split, index, sub, sprintf, ...)

Im Anschluss an den Vortrag gibt es die Möglichkeit Fragen zu stellen und zu diskutieren.

Das OS X des Mac basiert auf UNIX. Der Anwender hat über das Dienstprogramm Terminal vollen Zugriff auf sämtliche Tools wie awk, sed, grep, test, sort u.s.w.

Über ein geeignetes Plugin lässt sich diese Möglichkeit auch innerhalb von FileMaker nutzbar machen. Eine Eigene Funktion stellt ein User-Interface für mehrere Plugins bereit.
Die Schnittstelle wird im Vortrag vorgestellt und erläutert. Sie bietet die Möglichkeit, Shell-Skripts mit mehreren Parametern und Eingabedaten zu versorgen. Es wird gezeigt, wie man eine Bibliothek von Shell-Skripts in ein FileMaker-Projekt integrieren, die Skripts mit verschiedenen Testdaten testen und später für den produktiven Betrieb nutzen kann.
Viele Probleme lassen sich auf diese Weise einfacher lösen als mit den von FileMaker bereitgestellten Funktionen. Das liegt daran, dass es viele UNIX-Tools gibt, die auf das Scannen von Eingabedaten mit Hilfe regulärer Ausdrücke spezialisiert sind.

Im produktiven Betrieb kann das getestete Skript mit SQL aus der Skriptbibliothek gelesen und mit der Funktion SHEXEC ausgeführt werden.

Erich Schmidt hat über 30 Jahre Erfahrung im Umgang mit UNIX-Shells. Er wird Anwendungsbeispiele für awk, sed, sort und evtl. weitere Tools geben. Der Schwerpunkt liegt dabei auf der Anwendung von awk mit seinen Builtin-Funktionen (match, split, index, sub, sprintf, ...)

Im Anschluss an den Vortrag gibt es die Möglichkeit Fragen zu stellen und zu diskutieren.

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt (20)

Advertisement

More from Verein FM Konferenz (18)

Recently uploaded (20)

Advertisement

FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt

  1. 1. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 www.filemaker-konferenz.com Erweiterung des Leistungsumfangs von FileMaker durch Zugriff auf die UNIX-Tools des macOS Dipl.-Math. Erich Schmidt Nutzung von SHELL-Skripts in FileMaker
  2. 2. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Über den Sprecher • 1974 Abschluss als Dipl.-Mathematiker
 (Universität Rostock) • ab 1978 Softwareentwicklung Mainframe (IBM 360) • Mitte der 80-er UNIX und C • Datenbankentwicklung seit 1990 (IBM AS/400) • ab 2005 freiberuflicher Softwareentwickler • ab 2013 mache ich nur noch, was richtig Spass macht
 FileMaker gehört manchmal auch dazu
 Erich Schmidt
  3. 3. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Zum Thema • Motivation • Was macht die Shell im UNIX? • Stand-alone-Test von Skripts am Terminal • Entwurf eines User-Interfaces für FileMaker • Mögliche Plugins zur Unterstützung in FileMaker • Implementierung einer Skriptbibliothek in FileMaker • Einige Beispiele
  4. 4. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Motivation • Die Verarbeitungslogik lässt sich in Form von Daten in einem Textfeld speichern. • Damit ist für ein neues Problem keine neue Funktion erforderlich, sondern nur ein neuer Datensatz. • Das System enthält eine umfangreiche Sammlung von Tools für die Analyse und Manipulation von Daten. • Viele der Tools arbeiten mit regulären Ausdrücken. • Es können eigene (z.B. in C oder C++) geschriebene Tools hinzugefügt werden. • Skripts lassen sich unabhängig von FileMaker erstellen und testen.

  5. 5. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Die Shell • Die Shell ist ein zeilenorientiertes USER-Interface am Terminal. • Sie ist ein normales Tool, das Zeilen liest und damit "etwas" macht. • Wenn die gelesenen Zeilen von einem File kommen, nennt man das File ein Shell-Skript. • Es gibt mehrere Shells im System. • Für jeden Nutzer gibt es eine Standard-Shell (bei mir: /bin/bash). • Der Leistungsumfang ist immens. • Es gibt aber einige Grundlagen mit denen
 wir uns gleich beschäftigen, weil sie zum
 Verständnis der Beispiele erforderlich sind. ca. 900 Seiten
  6. 6. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Die Bourne-again Shell (bash) • Die von der Shell gelesenen Zeilen werden ggf. aufbereitet und interpretativ abgearbeitet.
 Beispiel: • Es können aber auch mehrere Kommandos in einer Zeile stehen. Die müssen dann durch ein Kommandotrennzeichen getrennt werden. • Ein Kommandotrennzeichen ist das Semikolon. Es bewirkt, dass alle in der Zeile stehenden Kommandos hintereinander ausgeführt werden.
 Beispiel: • Ein weiteres ist der senkrechte Strich | (Pipe). Er bewirkt, dass die Ausgabe des links stehenden als Eingabe des rechts stehenden Kommandos verwendet wird (auch mehrfach hintereinander).
 Beispiel: • Es gibt noch weitere Kommandotrennzeichen ls -lsa cd /tmp;ls -ls ls | sort -r
  7. 7. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Shell-Parametersubstitution • Die Paramtersubstitution ist eine von vielen Aufbereitiungsleistungen der Shell. • Stellungsparameter werden durch Angabe beim Aufruf eines Skripts oder Kommandos definiert
 MyScript -h 43 txt • Schlüsselwortparameter durch ein Schlüsselwort gefolgt von = und einem Wert
 KUNDE=7081 • Es gibt built-in-Parameter (PATH, PWD, LOGNAME, HOME, #, ?, PS1, PS2,…), 
 von denen einige read-only sind. • Die Shell scannt jede gelesene Zeile auf bestimmte Zeichen(folgen). (Metazeichen) • Das Metazeichen $ gefolgt von einer Nummer leitet eine Parametersubstitution ein
 $1 ersetzt die Shell durch den ersten, $2 durch den zweiten Stellungsparameter u.s.w. • Das Metazeichen $ gefolgt von einem Schlüsselwort wird durch den Wert des entsprechenden Schlüsselwortparameter ersetzt, zum Beispiel:
 $HOME --> /Users/fmk (die Tilde ~ ist ein Synonym für $HOME)
 $KUNDE --> 7081

  8. 8. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Stand-alone-Test von Skripts am Terminal • Ein spezielles Verzeichnis für Shell-Skripts anlegen (Im Finder oder im Terminal)
 cd;mkdir bin • In der .profile im HOME-Verzeichnis den PATH-Parameter ändern, so dass der PATH das Skriptverzeichnis enthält. 
 PATH=~/bin:$PATH • Die hidden files werden im Finder mit der Tastenkombination SHIFT-CMD-. sichtbar. Im Terminal mit ls -lsa • Mit einem beliebigen Text-Editor ein Skript-File erstellen. • Das Skript mit chmod u+x MySkript ausführbar setzen. • Skript unter seinem Filenamen im Terminal aufrufen und ggf. Parameter angeben.
 MySkript parm1 parm2
  9. 9. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Das Tool awk • awk ist nur eines (wenn auch ein sehr mächtiges) von vielen Werkzeugen • Es ist speziell für die Analyse und Manipulation von Textdaten konzipiert • Die Verarbeitung geschieht so, dass eine oder mehrere Dateien zeilenweise gelesen und nach Regeln die der Aufrufer festlegt verarbeitet werden • Die Regeln enthält das awk-Programm • Aufrufvarianten:
 
 awk 'awk-programm' 
 
 awk -v V1=wert1 -v V2=Wert2 ... 'awk-programm'
 
 Beispiel: 
 awk -v N=$1 -v M=$2 'awk-programm'
  10. 10. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Regeln bei Ausführung eines awk-Programms • Ein awk-Programm liest alle Eingabezeilen (Daten). • Für jede Zeile wird das gesamte awk-Programm ausgeführt • Eine Programmzeile hat die Form: bedingung { aktion } • Wenn die gelesene Zeile die Bedingung erfüllt, wird die Aktion ausgeführt, sonst nicht. Eine Bedingung die fehlt, ist immer erfüllt. • Jede Eingabezeile wird automatisch in Felder aufgeteilt. Zwischen den Feldern steht das Feldtrennzeichen. Das wird in der Builtin-Variablen FS definiert. (FS=" ") • Beim Lesen einer Datenzeile werden die Builtin-Variablen NR (Number of Record) und NF (Number of Fields) neu gesetzt. • Die Aktionen, die unter den Bedingungen BEGIN bzw. END codiert sind werden vor dem Lesen der ersten bzw. nach dem Lesen der letzten Zeile ausgeführt.
  11. 11. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Entwurf einer Schnittstelle für FileMaker • Für die Skriptausführung wird benötigt:
 Skripttext
 Daten (optional)
 Parameter (optional, werden als Liste übergeben) • Dafür gibt es für jedes unterstützte Plugin eine CF mit diesen 3 Parametern • Die CFs stellen ein ablauffähiges Skript zusammen und rufen jeweils die entsprechende Plugin-Funktion auf.
 Die Daten werden als Here Document in das Skript integriert und dem ersten Kommando zugeordnet. • Die Plugin-Funktionen sind für 
 BaseElements: BE_ExecuteSystemCommand
 bBox: bBox_Shell
 MBS: AppleScript.Run (do shell script)
  12. 12. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Entwurf einer Schnittstelle für FileMaker • Für den Anwender wird das noch einmal gekapselt, damit unabhängig vom verfügbaren Plugin immer der gleiche Aufruf erfolgen kann. • Wrapper: SHELL(cmd;stdin;parm) • Im Startskript wird das Betriebssystem geprüft (Mac OS) und ob mindestens eines der Plugins installiert ist. • Setzen und Abfragen von Flags siehe auch: 
 FMM2017-01 S38 ff. und FMM2017-02 S. 22 ff.
  13. 13. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Ausführung in FileMaker
  14. 14. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Einige Builtin-Funktionen in awk length[(x)] length($6) int(x) int($2/10) substr(s,m,n) substr(s,3,$1) index(s,t) index("172-518","-") match(s,r) match($2,"[X-Z][0-9]+") Setzt die Builtin-Variablen RSTART und RLENGTH split(s,a,r) split("JAN,FEB,MRZ",m,",") Belegt ein Array a mit den Komponenten von s
  15. 15. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Einige Builtin-Funktionen in awk sub(r,t[,s]) sub(" +"," ",$1) global mit gsub(r,t[,s]) printf(fmt,expr,…) formatierte Ausgabe Beispiele printf("%5dn",zahl) 5 Stellen rechtsbündig printf("%07dn",zahl) 7 St. mit führenden Nullen printf("%s : %9.2f ","Summe",s) mit 2 Kommastellen printf(" %*d",l,zahl) Ausgabelänge steht in l
  16. 16. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Einige Unterschiede zwischen C u. awk Die Syntax der awk-Skriptsprache ist C-like. Es gibt aber Unterschiede zu C. In awk gibt es keine Pointer, folglich auch keine Pointerarithmetik. Stringvariablen lassen sich mit -konstanten vergleichen z.B.: $1 == "PLZ" Den Kommaoperator aus C gibt es nicht in awk. In awk muss die letzte Anweisung einer Zeile nicht mit Semikolon enden. Variablen müssen nicht definiert werden. Typ ergibt sich aus Kontext und kann sich kontextabhängig ändern. awk unterstützt assoziative Arrays awk unterstützt keine mehrdimensionalen Arrays
  17. 17. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Spezielle Ausdrücke und Operatoren in awk x = a+2*p; x == a+2*p x != 3 Inkrement/Dekrement Bedeutung x = ++n; n=n+1;x=n; Wertzuweisung Vergleich x = n++; x=n;n=n+1; x = —-n; n=n-1;x=n; x = n—-; x=n;n=n-1; Zusammengesetzte Wertzuweisung Bedeutung s += k; s = s + k; s *= 2; s = s * 2;
  18. 18. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Spezielle Steuerungselemente awk awk kennt alle Sprachemente zur Programmsteuerung aus C Zusätzlich: for( var in array) # for-Schleife für assoziative arrays Beispiel: for( m in monat) print m,monat[m]; next; # übergeht die restlichen Aktionen des awk-Programms 
 (liest die nächste Zeile) nextfile; # beendet die Verarbeitung der aktuellen Eingabedatei
  19. 19. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Literatur • Helmut Herold: 
 UNIX Grundlagen 
 Kommandos und Konzepte
 ADDISON-WESLEY 1991 ISBN 3-89319-306-5 • Helmut Herold:
 UNIX-Shells
 Bourne-Shell, Korn-Shell, C-Shell
 ADDISON-WESLEY 1992 ISBN 3-89319-381-2 • Helmut Herold:
 AWK und SED
 ADDISON-WESLEY 1991 ISBN 3-89319-344-8 • Kai Surendorf:
 Mac OS X Snow Leopard und UNIX
 Galileo Press 2010 ISBN 978-3-8362-1476-6 • Erich Schmidt
 Listen listig verarbeiten
 FMM2016-03 S. 31ff. K&K Verlag Hamburg • Erich Schmidt
 Outsourcing von Verarbeitungsschleifen
 FMM2017-06 S. 10ff. K&K Verlag Hamburg
  20. 20. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Fragen und Antworten Der Idealfall: Sie fragen, ich antworte.
  21. 21. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019 Vortrag und Sprecher Vielen Dank unseren Sponsoren Danke für das Bewerten dieses Vortrages

×