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
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
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
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.

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
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
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

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
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. 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.
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)
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.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt
Ausführung in FileMaker
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
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
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
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;
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
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
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.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Vortrag und Sprecher
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages

FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt

  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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. 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.
    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.
    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.
    10. FileMaker Konferenz| Hamburg | 16.-19. Oktober 2019 Nutzung von SHELL-Skripts in FileMaker - Dipl-Math. Erich Schmidt Ausführung in FileMaker
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    10. FileMaker Konferenz| Hamburg | 16.-19. Oktober 2019 Vortrag und Sprecher Vielen Dank unseren Sponsoren Danke für das Bewerten dieses Vortrages