2017-06-04 2 views
0

Ich brauche deine Hilfe, wie man mit Leerraum in einem Pfad umgehen kann.Wie man mit Leerzeichen in osascript umgehen kann

In meinem Beispiel unten setze ich einige Variablen in einer Terminal Bash Shell und führe "osascript" aus der Kommandozeile aus, benutze diese Variablen um ['do shell script'] & ['display dialog'] auszuführen. Wenn ich diese von der Befehlszeile aus starte, erhalte ich unterschiedliche Ergebnisse. Mein ultimatives Ziel ist es, ['do shell script' ausführen zu können] und es führt das Bash-Shell-Skript basierend auf dem Pfad aus. In diesem Fall enthält der Pfad Leerzeichen.

HINWEIS: Die unten definierte INSTALLER_PATH Variable wird so eingestellt, weil der Pfad von einem Apple Script generiert wird, das im Prinzip einen Pfad [mit Leerzeichen] enthält und diesen Pfad mit einer anderen Variablen kombiniert. Da dieser Pfad Leerzeichen im Namen enthält, verwende ich die Einstellung [nach Anführungszeichen], die den Pfad in Anführungszeichen setzt.

APPLE SCRIPT Beispiel:


set pathToApp to POSIX path of ((path to me) as text) 
set dragonFrame to ("_DRAGONFRAME/") 
set INSTALLER_PATH to quoted form of pathToApp & dragonFrame 
display dialog INSTALLER_PATH 

erzeugt dieses Wegs {die Zecken bemerken}:

'/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/'_DRAGONFRAME/ 

Statt dies durch das Apple Script testen zu finden die genaue Syntax, die ich brauchen würde, dachte ich mir einfacher sein, dies über die Befehlszeile zu testen. Dies ist genau das, was ich über meine Terminal-Befehlszeile einstelle und ausführe. In den folgenden Beispielen funktioniert ['display dialog'] und ['do shell script'] schlägt fehl. Ich denke, wenn es eine Möglichkeit den gesamten Pfad in Anführungszeichen zu umschließen, mein Problem gelöst werden würde, obwohl alle Versuche, den Pfad in doppelten Anführungszeichen gesetzt bekommen fehlgeschlagen:

%> INSTALLER_PATH='/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/'_DRAGONFRAME/ 

%> ADMIN_USER_PROC="_Python_PySide_QT_Installer/Scripts/AdminUserProcesses.sh" 

%> osascript -e 'do shell script ("'"${INSTALLER_PATH}"'" & "'"${ADMIN_USER_PROC}"'")' 

erzeugt diesen Fehler:

0:217: execution error: sh: /Volumes/Free.Space/Shotgun: No such file or directory (127) 

%> osascript -e 'display dialog ("'"${INSTALLER_PATH}"'" & "'"${ADMIN_USER_PROC}"'")' 

GENERIERT diesen Pfad:

/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/_DRAGONFRAME/_Python_PySide_QT_Installer/Scripts/AdminUserProcesses.sh 

Danke im Voraus für jede Hilfe, die Sie anbieten können.

+0

[. Wie Werte in einem Apple als 'run' Handler Parameter zu übergeben] (https://stackoverflow.com/questions/16966117/combining-variables-in-bash-to-form-a -command-sent-to-applescript-using-the-osas/16977401 # 16977401) – foo

Antwort

0

Ich glaube, du bist für etwas ähnlich wie diese Syntax suchen:

set dragonFrame to ("/_DRAGONFRAME/") 
set INSTALLER_PATH to path of (pathToApp & dragonFrame) 

Ergebnis:

'/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/_DRAGONFRAME/' 

Wenn Sie doppelte Anführungszeichen um den Pfad benötigen, können Sie verwenden:

("\"" & pathToApp & dragonFrame & "\"") 

und loswerden der zitierten Form Argument verlassen Sie mit:

set INSTALLER_PATH to ("\"" & pathToApp & dragonFrame & "\"") 
Verwandte Themen