如何让osascript / Applescript接受包含SPACES的命令行参数?

时间:2017-02-08 00:38:35

标签: macos applescript osascript

如果使用没有空格的CLP'调用此代码(例如“~testing”或“/ Volumes / BOOTCAMP测试”),它运行正常。但是,如果CLP包含空格(例如“/ Volumes / Shared External testing”,“~test results”或“/ Volumes / Shared External test results”),则它会出现故障或因错误消息而中止。

以下代码段是演示问题的最低代码:

on run (clp)
    if clp's length is not 2 then error "Incorrect Parameters"
end run

实际应用的相关代码是:

on run (clp)
    if clp's length is not 2 then error "Incorrect Parameters"
    local destination, libraryName
    set destination to clp's item 1
    set libraryName to clp's item 2

此应用除了将数据保存为第一个参数的目录以及将其保存为第二个参数的文件名。第一个破坏的示例将导致目标设置为“/ volumes / Shared”,将libraryName设置为“External”,其余部分将被忽略。第二个破坏的示例将导致目标设置为“〜”并将libraryName设置为“test”,其余部分将被忽略。最后一个破坏的例子将导致与第一个例子相同的结果。

我已广泛搜索并已尝试将包含参数的空格包含在以下各项中,但未成功:双引号,单引号和{}。我还尝试用逗号而不是空格分隔所附参数,并在{}中包含所有参数。同样,这些都没有成功。我也咨询过“info osascript”无济于事。

有没有人有解决方案,甚至更多想法尝试?

1 个答案:

答案 0 :(得分:0)

测试脚本:

on run (clp)
    if clp's length is not 2 then error "Incorrect Parameters"
    local destination, libraryName
    set destination to clp's item 1
    set libraryName to clp's item 2
    display dialog libraryName -- libraryName contains "test 123"
    display dialog destination -- destination contains "/Volumes/Shared External"
end run

当我在 bash shell

中执行此命令时
osascript '/the full path/of the/testingScript.scpt' '/Volumes/Shared External' 'test 123'

对话框正确显示两个参数。