Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>FileMaker und ShellSkript

FileMaker und ShellSkript

dogsch18.05.2110:02
Hallo,
ich versuche das angehängte ShellSkript in FileMaker zu bringen, damit das dann von dort dort aus über "AppleSkript ausführen" - "do shell script..." ausgeführt wird.
Jedoch scheint es irgendwie Probleme bei der Variablenübergabe zu geben.
Kann mir hier jemand helfen?
Danke & Gruß
OttoGeorg
0

Kommentare

dogsch18.05.2110:07
in FileMaker sieht das Skript dann so aus:

0
nane
nane18.05.2110:17
Das "fi" zum Schluss soll "if" heissen oder?

Hast Du das erweiterte Zugriffsrecht "fmextscriptaccess" aktiviert?
„Das Leben ist ein langer Traum, an dessen Ende kein Wecker klingelt.“
-1
Wellenbrett18.05.2110:22
Mir fällt auf, dass die Anführungszeichen, die der Filemaker-Interpreter direkt auswerten muss (z.B. die in der Pfadangabe in der ersten Zeile) die gleichen sind, wie die inneren, die erst später in der Shell interpretiert werden. Möglicherweise führt das als Nebenwirkung zu Problemen bei der Identifizierung der Variablen.
+2
Wellenbrett18.05.2110:25
nane
Das "fi" zum Schluss soll "if" heissen oder?
Bin auch erst darüber gestolpert. "man fi" listet ihn aber als "eingebauten" Befehl auf.
0
vasquesbc
vasquesbc18.05.2110:37
nane
Das "fi" zum Schluss soll "if" heissen oder?

Das ist schon korrekt, so:
„Allwissend bin ich nicht; doch viel ist mir bewußt.“
+1
dogsch18.05.2111:50
@nane - hmmm, diesen Punkt sehe ich garnicht (siehe Bildchen im Anhang)...

0
nane
nane18.05.2112:17
dogsch
Scheint in dieser Version "fmscriptdisabled" zu sein. hmmmm ... kenne ich so nicht. Diese Hinweise wurden umgesetzt?

alle
Interessant, wie aus einem "if" ein "fi" wird, danke für den Hinweis, kannte ich nicht.
„Das Leben ist ein langer Traum, an dessen Ende kein Wecker klingelt.“
0
ttwm18.05.2115:57
Klappt das überhaupt, eine AppleScript-Variable so in eine Shell-Variable zu überführen? Woher soll die Shell wissen, dass in AppleScript eine Variable mit diesem Namen deklariert wurde…

Sieht für mich auf den ersten Blick strange aus (evtl. bin ich aber auch auf einem steinalten Stand).

Meiner Einschätzung nach müsste alles hinsichtlich derPfad AppleScript-technisch mit " & derPfad & " in die do shell script-Anweisung eingebunden werden, damit das Sinn ergibt.

Ich lass mich aber auch steinigen, wenn ich Stuss rede
+1
Peter Eckel18.05.2116:56
Blöde Frage meinerseits: Ist die Ausgabe "Dir [NOT] prsent" wichtig?

Wenn Du die nicht wirklich brauchst, würde es nämlich auch
/bin/mkdir -p "/Volumes/GoogleDrive/MeineAblage/testblabla"
tun.

Dein Code ist (abgesehen von der Ausgabe) unnötig viel komplizierter.
„Ceterum censeo librum facierum esse delendum.“
0
MikeMuc18.05.2117:07
ttwm
Nein, das ist überhaupt kein Stuß sondern zu 100% korrekt.
Manchmal helfen aber auch einfache Anführungszeichen um die Syntax zu vereinfachen. Wichtig wird das, sobald Leerzeichen im Pfad / Dateinamen auftauchen sollten. Beim Mac treten die ja häufig auf, nur fanatische Bashscripter nehmen oft da keine Rücksicht drauf und dann laufen manche Scripte auf einmal nicht
0
dogsch18.05.2118:12
@Peter Eckel - oh Du mein Held!
Vielen Dank!
Eigentlich waren auch die Abfrage nur als Sicherheitsfeature gedacht, damit nichts überschrieben wird.
0
dogsch18.05.2118:23
obwohl, ganz so heldig ist es dann doch nicht - ich brauche ja doch eine Parameterübergabe, denn es soll in einem Skript Dokumente in Kundenordner abgelegt werden und dieser Teil des Skripts soll dann eben prüfen ob ein Ordner "Kundenname_Kundennummer" (aus den entsprechenden Feldern) vorhanden ist und wenn nicht einen solchen erstellen.
0
Peter Eckel18.05.2118:28
dogsch
obwohl, ganz so heldig ist es dann doch nicht - ich brauche ja doch eine Parameterübergabe, denn es soll in einem Skript Dokumente in Kundenordner abgelegt werden und dieser Teil des Skripts soll dann eben einen Ordner "Kundenname_Kundennummer" (aus den entsprechenden Feldern) ablegen.
Ja, aber ob Du den Pfad für das Verzeichnis dem Script übergibst oder das Script wegläßt und es mit in die Kommandozeile für das mkdir-Kommando schreibst ist eigentlich ziemlich egal, oder?
„Ceterum censeo librum facierum esse delendum.“
+1
dogsch19.05.2110:40
@Peter Eckel - sorry, ich verstehe nicht was Du meinst.
Siehe Anhang - das funktioniert leider nicht...
0
ttwm19.05.2111:12
Ich habs im Scripteditor (Big Sur) jetzt ausprobiert…

do shell script "mkdir \"derOrdner\""
greift nicht auf die AppleScript-Variable "derOrdner" zu, sondern möchte ein Verzeichnis namens "derOrdner" erstellen…

Was funktioniert (wie schon weiter oben von mir angedeutet):
set derOrdner to "~/Desktop/Test/Test2"
do shell script "mkdir " & derOrdner
Ergebnis: im vorhandenen Ordner Test wird ein neuer Ordner Test2 angelegt.

Weiteres Problem bei Deiner Verzeichnisangabe (deswegen bin ich auf die Schnelle auf ~ im Pfad zu derOrdner ausgewichen): "Macintosh HD" enthält Leerzeichen und produziert in der Shell dadurch Fehler.
+1
Peter Eckel19.05.2111:34
dogsch
@Peter Eckel - sorry, ich verstehe nicht was Du meinst.
Siehe Anhang - das funktioniert leider nicht...
Geständnis meinerseits: Ich habe wirklich keine Erfahrung mit AppleScript, in Sachen "Interface" kann ich Dir da also nicht helfen.

Was ich meinte: Wenn Du es schaffst, einen Parameter an Dein Script zu übergeben (der Hinweis von ttwm unten könnte vielleicht helfen), dann kannst Du auch einen an das einfache "mkdir -p" übergeben. Da ist das Script nur ein Umweg, den Du nicht brauchst und der die Dinge schwieriger macht als sie sein müssen.

ttwm: Hast Du mal
set derOrdner to "/Macintosh HD/Users/username/Desktop/blabla"
do shell script "mkdir \"" & derOrdner & "\""
versucht? Oder wie auch immer man in AppleScript Anführungszeichen maskiert?
„Ceterum censeo librum facierum esse delendum.“
+1
dogsch19.05.2114:59
@ttwm - ok, so klappt es soweit - Danke!
Mein Problem ist es jedoch, das auf dem Server (Google Drive) die Ordner leider mit Leerzeichen sind - "/Volumes/Google Drive/Meine Ablage" bzw. "/Volumes/Google Drive/Geteilte Ablage" und darauf habe ich leider keinen Einfluß - seufz...
0
dogsch19.05.2115:05
@Peter Eckel - das klappt leider nicht (hatte ich bereits versucht), da kommt die Fehlermeldung:
"mkdir: /Macintosh HD/Users/username/Desktop/ No such file or directory"
0
ttwm19.05.2115:32
Vielleicht hilft Dir das Beispiel mit "quoted form of the POSIX path" ein wenig weiter (bei Pfad mit Leerzeichen) - mangels GoogleDrive kann ich da nicht vollkommen mitprobieren (wenn aber alles nichts hilft, installier ich mir das halt noch):

set derOrdner to "/Volumes/Catalina/Users/ttwm/Documents/bla ba"
set derOrdner to quoted form of the POSIX path of derOrdner
do shell script "mkdir " & derOrdner

EDIT: ich erstelle den Code immer nur im ScriptEditor (diesmal unter Catalina), ob der liebe FileMaker nochmal eine zusätzliche Hürde reinwirft, kann ich leider nicht testen.
0
Peter Eckel19.05.2115:38
dogsch
@Peter Eckel - das klappt leider nicht (hatte ich bereits versucht), da kommt die Fehlermeldung:
"mkdir: /Macintosh HD/Users/username/Desktop/ No such file or directory"
Mein Fehler möglicherweise ... es muß natürlich "mkdir -p " heißen. Und bei "username" mußt Du Deinen Benutzernamen eintragen ...
„Ceterum censeo librum facierum esse delendum.“
0
Peter Eckel19.05.2116:26
Also nochmal komplett und hoffentlich richtig mit der Verbesserung von ttwm:
set derOrdner to "/Users/dirkschiemann/Desktop/blabla"
set derOrdner to quoted form of the POSIX path of derOrdner
do shell script "/bin/mkdir -p " & derOrdner
(und ja, jetzt hat das f***ing Webfrontend wieder irgendwelche Umbrüche eingefügt )

Ich habe das gerade mal bei mir sinngemäß getestet und es geht.

Blöde Frage: Kann AppleScript nicht selbst Ordner anlegen?
„Ceterum censeo librum facierum esse delendum.“
+1
dogsch19.05.2118:10
Heureka - es funktioniert und auch mit Leerzeichen im Pfad!!!
Vielen Dank für die Geduld und Ausdauer...
+2
MikeMuc19.05.2119:28
ttwm
Weiteres Problem bei Deiner Verzeichnisangabe (deswegen bin ich auf die Schnelle auf ~ im Pfad zu derOrdner ausgewichen): "Macintosh HD" enthält Leerzeichen und produziert in der Shell dadurch Fehler.

Wie ich oben schon schrieb: Den Pfad in einfache Hochkommas setzen (Die ' fehlen bei Peters "kürzester" Lösung) oder eben "Quoted Form" verwenden.
set derOrdner to "/Macintosh HD/Users/username/Desktop/blabla"
do shell script "mkdir '" & derOrdner & "'"
Dann dürfen die \" entfallen. Um sowas besser nachvollziehen zu können, ist es besser, das komplette Script erst in einer Formel in ein extra Feld zu evaluieren und dann dieses dem Scriptschriit zur Ausführung vorzusetzen. So kann man das Ergebnis der Formal erstmal in ein Fenster des Scripteditors kopieren und dort testen.
0
dogsch20.05.2109:03
@MikeMuc - auch Dir Danke!
+1
ttwm20.05.2115:40
Peter Eckel
Blöde Frage: Kann AppleScript nicht selbst Ordner anlegen?
Doch, AppleScript kann auch Ordner anlegen. Der Haken dabei: nach einem OS-Update darf man sich nie in Sicherheit wiegen, dass Scripte – die übertrieben gesagt über "addiere 1+1" hinausgehen – auch noch reibungslos laufen.
0
Peter Eckel20.05.2118:01
ttwm
Doch, AppleScript kann auch Ordner anlegen. Der Haken dabei: nach einem OS-Update darf man sich nie in Sicherheit wiegen, dass Scripte – die übertrieben gesagt über "addiere 1+1" hinausgehen – auch noch reibungslos laufen.
OK, danke, das beruhigt mich irgendwie. Andererseits habe ich, inspiriert durch Deinen Hinweis, gerade mal geschaut, wie das geht ... gruselig. Ich bin ziemlich froh, daß ich meine Brötchen nicht mit AppleScript verdiene
„Ceterum censeo librum facierum esse delendum.“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.