2014-11-08 74 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