如何处理osascript中的空格

时间:2017-06-04 20:02:29

标签: bash syntax applescript osascript

我需要你如何处理路径中的空白区域。

在下面的例子中,我在终端bash shell中设置一些变量并执行," osascript"从命令行,利用这些变量运行['做shell脚本']& ['显示对话框']。当我从命令行运行这些时,我得到了不同的结果。我的最终目标是能够执行['做shell脚本']并根据路径执行bash shell脚本。在这种情况下,路径中包含空格。

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

APPLE SCRIPT示例:

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/

不是通过Apple Script测试这个,而是找到我需要的确切语法,我认为从命令行测试它会更容易。这正是我在终端命令行中设置和执行的内容。在下面的示例中,执行['显示对话框' ]工作和['做shell脚本' ]失败了。我认为如果有一种方法将整个路径用双引号括起来,我的问题就会得到解决,尽管所有试图用双引号括起来的路径都失败了:

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

提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分: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 & "\"")