如何让 osascript/Applescript 接受其中包含 SPACES 的命令行参数?
How do I get osascript/Applescript to accept command line parameters with SPACES in them?
如果使用其中没有 space 的 CLP(例如“~ testing”或“/Volumes/BOOTCAMP testing”)调用此代码,它运行良好。但是,如果 CLP 包含 spaces(例如“/Volumes/Shared 外部测试”、“~ 测试结果”或“/Volumes/Shared 外部测试结果”,则它会发生故障或因错误而中止留言。
以下代码片段是演示该问题的最基本代码片段:
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”并将库名称设置为"External",其余的将被忽略。第二个错误的例子会导致目标被设置为“~”,库名被设置为 "test",其余的被忽略。最后一个损坏的示例将导致与第一个示例相同的结果。
我已经进行了广泛的谷歌搜索,并且已经尝试在以下各项中包含包含参数的 space 但没有成功:双引号、单引号和 {}。我还尝试用逗号而不是 spaces 分隔封闭的参数,并将 all 参数括在 {} 中。同样,其中 none 取得了成功。我也咨询了"info osascript"没用
有没有人有解决方案,或者有更多想法可以尝试?
测试脚本:
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'
对话框正确显示两个参数。
如果使用其中没有 space 的 CLP(例如“~ testing”或“/Volumes/BOOTCAMP testing”)调用此代码,它运行良好。但是,如果 CLP 包含 spaces(例如“/Volumes/Shared 外部测试”、“~ 测试结果”或“/Volumes/Shared 外部测试结果”,则它会发生故障或因错误而中止留言。
以下代码片段是演示该问题的最基本代码片段:
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”并将库名称设置为"External",其余的将被忽略。第二个错误的例子会导致目标被设置为“~”,库名被设置为 "test",其余的被忽略。最后一个损坏的示例将导致与第一个示例相同的结果。
我已经进行了广泛的谷歌搜索,并且已经尝试在以下各项中包含包含参数的 space 但没有成功:双引号、单引号和 {}。我还尝试用逗号而不是 spaces 分隔封闭的参数,并将 all 参数括在 {} 中。同样,其中 none 取得了成功。我也咨询了"info osascript"没用
有没有人有解决方案,或者有更多想法可以尝试?
测试脚本:
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'
对话框正确显示两个参数。