2014-11-08 73 views
1

这里是我的小测试脚本:Osascript - 不输出

do shell script "cd ~/Desktop; ls -l1" 
set x to the result 
tell application "Finder" to activate 

当我通过脚本编辑器中运行它,它工作正常。

当我试图通过终端,如osascript myscript.scpt一样的东西,它根本不工作 - 没有任何输出。

顺便说一句,我试过,甚至通过可可NSTask调用它。有一次它工作,然后它不断返回一个奇怪的Class _NSZombie_OS_xpc_data is implemented in both ?? and ??. One of the two will be used. Which one is undefined.错误消息(osascript不是可可)。

发生了什么事?


P.S.我不知道这是否是相关的所有,但在终端尝试了top后,我跑(?!),但它杀死并没有什么好处或者注意到的osascript实例...

回答

1

当你使用osascript命令,你只会得到最后一个AppleScript命令的结果。

所以,最后的命令是tell application "Finder" to activate,这个命令什么都不返回。

要获得do shell script命令的结果,使用:

set x to do shell script "cd ~/Desktop; ls -l1" 
tell application "Finder" to activate 
return x 
+0

OK,因为我已经做了很大的进步,因为我第一次张贴的问题。让我这样说:除了使用“AEDebugReceives = 1”之外,还有没有其他方法可以从osascript中获得中间事件/回复(不是最终结果)? – 2014-11-08 13:42:52

+0

您可以返回许多包含文本或数字的变量:'返回var1&linefeed&var2&linefeed&var3',否则我不知道任何其他方式。 – jackjr300 2014-11-08 14:30:51

+0

如果你运行上面的脚本(没有返回任何东西),你会注意到它也会输出中间事件(在“events”和“reply”标签下)。获取这个输出的一种方法是设置export AEDebugReceives = 1 '在终端中,重新启动Finder并重新执行脚本,就像你通常那样(例如'osascript yourscript.scpt')尝试一下;-) – 2014-11-08 14:34:50