如何使用参数打开AppleScript应用程序

时间:2015-03-25 14:13:34

标签: bash terminal applescript

我有一个AppleScript运行扫描到特定文件夹的扫描程序(命令行)。我需要将参数传递给applescript,然后将参数传递给终端。

在终端中,我想运行open -a /Applications/MyScanApp.app myargument并运行AppleScript。我怎么能通过这个论点?谢谢您的帮助!我通常是一名PHP程序员,这与我完全不同。

我的AppleScript:

tell application "Terminal"
    do script "./myscanprogram myargument 2>&1"
end tell

2 个答案:

答案 0 :(得分:9)

为什么没有人提到quoted form of?如果要将任意数据作为参数发送到应用程序,则应使用引用形式。当引号,空格和其他特殊字符在给定路径中时,命令将在前面的示例中分解。

on run argv
    tell application "Terminal"
        do script "./myscanprogram " & quoted form of (item 1 of argv) & " 2>&1"
    end tell
end run

既然你提到你是AppleScript的新手吗?它必须在Terminal.app中运行还是足够的shell? AppleScript有一个命令do shell script,它打开一个shell,执行文本并将标准返回给你。

on run argv
   do shell shell script "/path/to/myscanprogram " & quoted form of (item 1 of argv) & " 2>&1"
end run

最后但并非最不重要。如果您不想要扫描程序的输出并且不希望AppleScript等到它完成,您可以使用

on run argv
   do script "/path/to/myscanprogram " & quoted form of (item 1 of argv) & " &>/dev/null &"
end run

答案 1 :(得分:3)

想知道为什么你使用你的终端来解决再次使用终端的AppleScript,但也许我只是不知道你的情况......

<强> AppleScript的:

on run argv
    tell application "Terminal"
        do script "./myscanprogram " & (item 1 of argv) & " 2>&1"
    end tell
end run

从终端内的 osascript 致电:

osascript pathToYourScript.scpt myargument