2017-06-04 89 views
0

我需要您的帮助,以了解如何处理路径中的空白区域。如何处理osascript中的空格

在我下面的示例中,我在终端bash shell中设置了一些变量,并从命令行执行“osascript”,利用这些变量运行['do shell script'] & ['display dialog']。当我从命令行运行这些时,我得到了不同的结果。我的最终目标是能够执行['do shell script'],并根据路径执行bash shell脚本。在这种情况下,路径中有空格。

注意:下面定义的变量INSTALLER_PATH是这样设置的,因为路径是从我写的Apple脚本生成的,该脚本基本上采用了一个[带有空格的路径]并将该路径与另一个变量组合在一起。因为这个路径在名称中有空格,所以我使用[引号形式]设置将路径放在引号中。

APPLE脚本示例:


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 

产生此路径{发现蜱}:

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

而不是通过苹果脚本测试该找我需要的确切语法,我想它会更容易从命令行测试。这正是我从终端命令行设置和执行的内容。在下面的例子中,执行['display dialog']工作,['do shell script']失败。我想,如果有括在双引号的整个路径的方式,我的问题将得到解决,尽管在得到用双引号将路径的所有尝试已经失败:

%> 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}"'")' 

生成此错误:

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

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

生成路径:

/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 

预先感谢您为您可以提供任何帮助。

+0

[如何值传递到一个AppleScript如'run'处理程序参数](https://stackoverflow.com/questions/16966117/combining-variables-in-bash-to-form-a -command-发送到使用AppleScript-最OSAS/16977401#16977401) – foo

回答

0

我认为你正在寻找类似这样的语法东西:

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

结果

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

如果需要路径周围双引号,你可以使用:

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

并摆脱引用的形式参数离开你用:

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