在我的客廳裏,我有一臺Mac Mini I作爲HTPC以及家庭自動化服務器。它用於自動化的軟件是Shion,這是一款AppleScript支持的免費家庭自動化應用程序。在同一臺Mac Mini上,我運行的是Apache,並且已經構建了一個可以發送命令的界面。 (關於它的價值,界面是使用jQuery Mobile構建的)。PHP執行與終端不同的osascript?
我遇到的麻煩是在終端和AppleScript編輯器中工作正常的AppleScripts在Apache錯誤日誌中拋出解析錯誤。由於終端和AppleScript編輯器成功運行腳本,我猜想我編寫我的PHP的方式是問題所在。但是當我檢查錯誤日誌時,它實際上是一個顯示出來的AppleScript錯誤。
的AppleScript的命令非常簡單:
tell application "Shion"
execute snapshot "Evening Lighting"
end tell
或者更簡單:
tell application "Shion" to execute snapshot "Evening Lighting"
這是原來的命令我開始工作,因爲我不知道如何使用 - e標誌將AppleScript分成多行。當我將它粘貼到AppleScript編輯器或終端中時,它可以毫無問題地執行。但在PHP中運行它不會工作:
$cmd = "osascript -e 'tell application \"Shion\" to execute snapshot \"Evening Lighting\"'";
exec($cmd);
在日誌文件中,該腳本返回錯誤是「A [原文]標識符不能這個標識符後去」。這是多人遇到的AppleScript錯誤,但我找不到任何一致的解決方案。一個迂迴,我發現是嘗試添加「利用申請‘紫苑’術語」到腳本的開頭,所以它看起來像這樣:
using terms from application "Shion"
tell application "Shion"
execute snapshot "Evening Lighting"
end tell
end using terms from
我必須弄清楚如何破解一個AppleScript用osascript分成多行,這可以使用-e標誌完成。如果我運行這個作爲一個經常osascript命令,它看起來像這樣:
osascript -e 'using terms from application "Shion"' -e 'tell application "Shion"' -e 'execute snapshot "Evening Lighting"' -e 'end tell' -e 'end using terms from'
再次,這在運行沒有問題的終端,還有的AppleScript編輯器。但現在我在日誌中收到了一個不同的錯誤:「預計行結束,但找到標識符」。
試試這個語法:osascript -e 「告訴應用程序\」 史昂\ 「」 -E 「結尾說」(與「和\ 「 和不 ' ) ? – 2012-11-17 14:18:20