从Cocoa中的Applescript运行的shell脚本获取连续输出

时间:2014-08-01 14:53:29

标签: cocoa shell applescript

我有一个shell脚本,它使用echo来提供连续输出(rsync的进度),我使用AppleScript以管理员权限运行。在我使用NSTask运行shell脚本之前,我找不到使用它所需的权限运行它的方法,所以现在我使用applescript来运行它。当它通过NSTask运行时,我可以使用输出管道和waitForDataInbackgroundAndNotify来获取连续输出并将其放入文本字​​段,但现在我正在使用AppleScript,我似乎无法找到实现此目的的方法。 shell脚本仍在使用echo,但似乎在AppleScript“包装器”中丢失了。如何确保AppleScript看到shell脚本的输出并将其传递给应用程序?请记住,这不是单个输出,而是连续输出。

1 个答案:

答案 0 :(得分:1)

零是正确的。当你使用do shell脚本时,你可以认为它类似于在perl中使用反引号。该命令将被执行,并且将返回发送到STDOUT的所有内容作为结果。

唯一的解决方法是让您的命令将输出写入临时文件,然后使用do shell script "foo" without waiting。从那里,您可以使用本机AppleScript命令顺序读取文件。它很笨重,但它会在紧要关头工作。