1 回答

TA貢獻1880條經驗 獲得超4個贊
在評論中回顧了這個之后,很明顯問題是 .jar 文件試圖進行交互——要求在光標處輸入一些內容——而 AppleScript 的設計不是為此而設計的do shell script。AppleScript 可以從 shell 獲取錯誤和輸出,但它無法將響應反饋給 shell,或者判斷 shell 腳本是否正在等待輸入。
如果 .jar 文件不能在非交互模式下運行,那么 AppleScript 確保進程結束的唯一方法是獲取其進程 ID 號,等待一段合理的時間,然后向其發送終止信號。該腳本如下所示:
on RunFile(jar_location)
set pid to do shell script "cd " & jar_location & " ; cat 'prompt.csv' | sh 'runScript.sh' 'WSO' &> /dev/null & echo $!"
-- wait 5 seconds, or whatever seems appropriate for the task to complete
delay 5
try
do shell script "kill " & pid
end try
end RunFile
附加的&> /dev/null & echo $!短語分離 shell 腳本,允許 AppleScript 向前移動,并返回進程的進程 ID 供以后使用。我將 kill 信號放在一個 try 塊中,這樣如果進程已經正常退出,腳本就不會拋出錯誤。
添加回答
舉報