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 块中,这样如果进程已经正常退出,脚本就不会抛出错误。
添加回答
举报